일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 2941번
- 화상영어
- 전화영어
- 백준파이썬
- 25206
- 백준크로아티아알파벳
- 백준 벌집
- 파이썬
- 백준 행렬 덧셈
- 그룹 단어 체커
- 백준 2738번
- 백준 25206
- 백준 파이썬
- 백준 1316
- 백준2941번
- 백준 2292번 파이썬
- 너의 평점은
- YBM
- 전화영어비교
- 백준
- 백준 2292번
- 백준 2292
- 1316번
- 무료수업후기
- 랭디후기
- 민병철유폰
- 백준 25206번
- 랭디
- 영어말하기
- 영어회화
- Today
- Total
가영이의 스토리
[백준/Python] 백준 2292번 벌집 본문
🏆백준 2292번 - 벌집
2292번: 벌집
위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다. 숫자 N이 주어졌
www.acmicpc.net
✍️문제

위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다. 숫자 N이 주어졌을 때, 벌집의 중앙 1에서 N번 방까지 최소 개수의 방을 지나서 갈 때 몇 개의 방을 지나가는지(시작과 끝을 포함하여)를 계산하는 프로그램을 작성하시오. 예를 들면, 13까지는 3개, 58까지는 5개를 지난다.
❓정답
a = int(input())
n = 1
count = 1
while a > n:
n += 6*count
count += 1
print(count)
💫 해설 및 한줄평
a를 통해 숫자를 입력받는다.
그리고 현재 벌집의 최대 방 번호를 n으로 받는다. 이때 가운데 1부터 시작하기 때문에 1을 더해주고 시작한다.
count로 벌집의 지나는 방 수를 나타낸다. 위와 동일한 이유로 1부터 시작해주었다.
벌집의 원리는 6의 배수만큼 늘어난다.
즉, 벌집을 1번 지날때는 2~7번, 2번 지날때는 8~19번 ··· 이런식으로 진행된다.
그래서 입력받은 a가 벌집의 개수 n보다 클때 계속반복하도록 while문을 사용하였다.
True일때, 최대 방 번호에 6의 배수만큼 더해주고 count에 1을 더해주는 방식을 반복한다.
예를들어, a = 18일때 처음 while문은 a=18 > n=1이므로 반복문을 실행한다.
그러면 n = n(1)+6*count(1)=7이 되고, count는 초기값에 1을 더해주어 2가 된다. (n과 count의 초기값 = 1)
다음 반복문은 a = 18 > n = 7이므로 반복문을 실행한다.
그러면 n = n(7)+6*count(2)=19가 되고, count는 2에 1을 더해주어 3이 된다.
다음 반복문은 a = 18 < n = 19가 되므로 반복문을 멈춰준다.
따라서 그 전 반복문의 count값인 3을 출력한다.
이런식으로 계속 n과 count값을 갱신해줘서 조건문을 만족하는지 판별한다!
while문 어떻게 돌아가는지 너무 헷갈렸다. 까먹지말기!!
'코딩연습장 > 백준' 카테고리의 다른 글
[백준/Python] 백준 10773번 제로 (0) | 2024.01.02 |
---|---|
[백준/Python] 백준 2563번 색종이 (0) | 2023.09.04 |
[백준/Python] 백준 2738번 행렬 덧셈 (0) | 2023.08.29 |
[백준/Python]백준 25206번 너의 평점은 (0) | 2023.08.28 |
[백준/Python] 백준 1316번 그룹 단어 체커 (1) | 2023.08.28 |