반응형

안녕하세요, 츄르 사려고 코딩하는 집사!      코집사입니다.

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 : 출력

 

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기