본문 바로가기

문제풀이/백준14

[백준] 1978번 소수찾기 😁 / 비트마스킹 / Python 문제풀이 풀이) 에라토스테네스의 체 방식을 이용하여 소수 갯수를 출력해주면 됩니다! 에라토스테네스의 체를 이용해 소수를 구분해주는 과정에서 일반적인 방법으로 하려면, 모든 숫자에 대해 소수인지 여부 (True/False) 를 나타내주는 값이 있어야 하기 때문에 메모리가 많이 소요됩니다. 예를들어 10000이 소수인지 아닌지를 판별하려면 seive[0] = FALSE seive[1] = FALSE seive[2] = TRUE 이런식으로 에라토스 테네스는 길이가 10000 짜리인 리스트가 생깁니다. 따라서 메모리를 줄일 수 있는 비트마스킹 기법을 사용하였습니다. 0 : 합성수 1 : 소수 seive[0] = 10101100 (순서대로 7,6,5,4,3,2,1,0에 해당하는 소수 여부) seive[1] = 001010.. 2020. 7. 3.
[백준] 1138번 한줄로 서기 ! 👨‍👨‍👧‍👦 - Python 문제풀이 해답) import sys def rl(): return sys.stdin.readline() def solution(N, people): origin = [0] * N # 정답 담을 배열 for height, how_many in enumerate(people): position = how_many # 적어도 암에 있던 사람 수보단 뒤에있다. index = 0 while how_many >= 0: # 앞에 사람있던 수만큼 확인한다. if origin[index] != 0 and origin[index] < height+1: position += 1 # 키작은 사람이 있었으면 index늘리고 how_many += 1 # 한 명 더 확인해본다. index += 1 how_many -= 1 origin[po.. 2020. 4. 27.