티스토리 뷰
[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 코드 풀이
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 변수를 출력한다.
'파이썬 스킬업 > 백준 알고리즘 연습' 카테고리의 다른 글
백준 1193번 [파이썬 알고리즘] : 분수찾기 (2) | 2020.07.10 |
---|---|
백준 알고리즘 2839 [파이썬] : 설탕 배달 (2) | 2020.07.09 |
백준 알고리즘 1712 [파이썬] : 손익분기점 _ 간단한 수학문제 (4) | 2020.07.09 |