티스토리 뷰

반응형

 

[Python] 백준 알고리즘 온라인 저지 2292번 : 벌집

 

Python3 코드

n = int(input())

nums_pileup = 1  # 벌집의 개수, 1개부터 시작
cnt = 1
while n > nums_pileup :
    nums_pileup += 6 * cnt  # 벌집이 6의 배수로 증가
    cnt += 1  # 반복문을 반복하는 횟수
print(cnt)

 

 

Python3 코드 풀이

백준 2292 벌집

1. 코드의 전체적인 풀이 요약

이 문제는 랜덤으로 숫자 N이 주어질 때 1이 있는 벌집 위치에서 숫자 N까지 거쳐가는 단계의 수를 찾아내는 문제이다. 다시 말해서 숫자 N이 벌집에서 몇 겹째에 있는지를 출력하는 문제이다.

 

문제를 풀 때는 while 반복문을 이용해서 풀었다. 벌집의 모양을 보면 벌집의 개수가 6의 배수로 증가하며 규칙성 있게 한 겹씩 쌓이고 있다. 이 점을 이용해서 while문이 반복하면서 6의 배수로 숫자가 증가하는 코드를 작성해 보았다.  while문은 이 증가하는 숫자가 입력받은 수인 N에 도달할 때까지만 반복하도록 했고 반복문이 반복되는 동안에 반복 횟수를 카운트해서 이 카운트한 숫자를 마지막에 출력하도록 했다.

 

2. 코드 상단에서는 숫자를 입력받고 변수를 선언하였다.

n = int(input())

nums_pileup = 1  # 벌집의 개수, 1개부터 시작
cnt = 1

맨 처음 입력받는 숫자는 벌집에서 이 숫자의 위치를 찾아야 출력해야 한다. 이 숫자는 변수 n에 선언하였고 while문을 반복할 때 사용하게 될 두 개의 변수는 nums_pileup 과 cnt로 네이밍 해서 각각 1을 선언하였다. 

 

nums_pileup은 벌집의 개수를 나타내는 변수이다. 정가운데에 한 개부터 시작해서 while문이 반복되는 동안 6의 배수로 숫자가 증가한다. cnt는 1부터 시작해서 반복문이 반복되는 횟수를 카운트한다. cnt는 이 문제의 답이 되는 수로 변수 n이 벌집의 겹수를 나타낸다.

 

3. 코드 하단에서 while문을 반복한다.

while n > nums_pileup :
    nums_pileup += 6 * cnt  # 벌집이 6의 배수로 증가
    cnt += 1
print(cnt)

반복문은 입력받은 n이 nums_pileup 변수보다 큰 동안에만 반복한다. 즉, nums_pileup 변수가 n보다 커지는 순간 반복문은 종료된다. nums_pileup 변수에는 6의 배수를 더해서 점차 증가하게 만들었다. 이때 6의 배수는 6*cnt로 표현하였다. cnt는 1부터 시작해서 while 문이 반복되는 동안 1,2,3,4,... 와 같이 1씩 증가하는 수이다.

 

코드의 마지막에는 while문이 모두 종료된 이후에 반복문을 반복한 횟수인 cnt 변수를 출력한다.

 

반응형
댓글
반응형