반응형
1. 코드
K = int(input()) #1
size = 1 #2
count = 0 #3
while size < K : #4
size = size<<1 #5
size2 = size #6
while K > 0 : #7
if K >= size : #8
K -= size #9
else : #10
size //= 2 #11
count += 1 #12
print(size2, count) #13
2. 솔루션
이 문제를 풀면서, 제가 아직도 알고리즘 하수라는 것을 많이 느꼈습니다. 메모리 초과와 시간 초과... 좀 더 분발해야겠습니다.
#1 : 초콜릿을 먹는 갯수 입력
#2 : size는 1,2,4,6,8,16 --- 이 갯수를 정하기 위한 변수
#3 : 몇 번 쪼개는지 세기 위한 변수
#4 : 이 문제에 대해 규칙을 보게 되면, 먹는 갯수는 2의 제곱수보다 작으면 된다. 예를 들어, 6개를 먹어야 하는 경우에 8개를 정하면 되고, 14개를 먹으면 16개를 정하면 된다.
#5 : <<1은 비트연산자로, 한 자리씩 이동하여 2의 제곱수를 나타낼 수 있다.
#6 : print하기 위한 변수
#7 : K의 개수 0보다 클 때까지 반복
#8 : size보다 크면 K값을 줄여 나가고,
#9 : size만큼 감소
#10 : 그렇지 않으면
#11 : size를 2로 나눈 값으로 다시 선언하고
#12 : 쪼갰으니 count 증가
#13 : 출력
반응형
'알고리즘 > 백준 알고리즘' 카테고리의 다른 글
백준 1152번 단어의 개수 파이썬(Python) (0) | 2020.06.14 |
---|---|
백준 1085번 직사각형에서 탈출 파이썬(Python) (0) | 2020.05.29 |
백준 1978번 소수 찾기 파이썬(Python) (0) | 2020.05.29 |
백준 2292번 벌집 파이썬(Python) (0) | 2020.05.27 |
백준 2783번 삼각 김밥 파이썬(Python) (0) | 2020.05.23 |
백준 11920번 버블정렬 파이썬(Python) (0) | 2020.05.22 |
백준 1427번 소트인사이드 파이썬(Python) (0) | 2020.05.17 |
백준 2231번 분해합 파이썬(Python) (3) | 2020.05.17 |
최근댓글