반응형
문제 설명
위 링크의 문제에 나온 것 처럼, 입력 한 숫자가 들어있는 칸에 가기 위해서 1번 칸 부터 거쳐야 하는 칸의 수를 출력하면 된다.
풀이 과정
1번이 가운데 기준으로 첫 번째 주기라고 했을 때 1,
2번째 주기는 2~7
3번째 주기는 8~19
4번째 주기는 20~37
5번째 주기는 38~61
이렇게 나타나며 각 주기의 끝자리가 6의 배수처럼 늘어나는 것을 알 수 있다.
즉, 1->7->19->37->61 은 6->12->18->24 이렇게 늘어난다.
그래서 1번 거쳐야 하는 방의 수는 1개,
2번 거쳐야 하는 방의 수는 6개
3번 거쳐야 하는 방의 수는 12개
4번 거쳐야 하는 방의 수는 18개 ... 이런 식으로 규칙적으로 늘어나게 됨을 알 수 있다.
따라서 다음과 같이 코드를 작성할 수 있다.
1인 경우는 1개이며, 2인 경우부터 내가 찾고자 하는 숫자가 현재 바퀴의 최대값보다 작으면 그 바퀴에 있으므로
그 바퀴를 출력해주면 된다.
n = int(input())
cur = 1
plus = 6
circle = 1
if n == 1:
print(1)
else:
while True:
cur += plus
circle += 1
if n <= cur:
print(circle)
break
plus += 6
전체 문제 & 코드는 위의 깃에 정리되어 있습니다.
팔로우 & 맞팔은 환영입니다 !
반응형
'Algorithm > BruteForce' 카테고리의 다른 글
[백준] 14889 스타트와 링크 (Python 파이썬) (0) | 2021.10.08 |
---|---|
[백준] 1436 영화감독 숌 (Python 파이썬) (0) | 2021.10.02 |
[프로그래머스] 메뉴 리뉴얼 (Python 파이썬) (0) | 2021.04.24 |
[프로그래머스] 숫자의 표현(Python 파이썬) (0) | 2021.04.22 |