-
백준 2292번 어떻게 풀었나백준 2023. 1. 13. 00:01
이 문제는
이 문제를 이상한 방향으로 생각하다, 시간이 너무 많이 걸릴거 같아서 답을보고 정리하기로 했다.
어떻게 푸나
문제 해석하기
우선 문제를 풀려면 다음과 같은 표를 생각해야 했다.
답 1칸 2칸 3칸 4칸 ... 범위 1~1 2~7 8~19 20~37 ... 갯수 1개 6개 12개 18개 ... 표 설명
- 답이 1칸인것, 2칸, 3칸인 N의 범위를 새어 보고, 그것의 갯수를 나타낸 표 이다.
- 갯수가 두번째 부터는 6, 12, 18로 6의 배수 만큼 늘어난다.
계획하기
위의 표 설명을 바탕으로 계획하면 된다.
위의 표의 범위에 따라서 답을 출력해 줄 것이다.
그렇게 하려면, 범위를 잡아줄 기준이 필요하다.
그 기준은 1, 7, 19, 37, ... 이다.
N이 기준보다 작거나 같고, 이전 기준보다 크다면, 기준에 따른 답이 나온다.
즉, 다음과 같이 반복되는 if문을 작성 해 주어야 한다.
i) N <= 1 이면, 답은 1칸
ii) N <= 7 이면, 답은 2칸
iii) N <= 19 이면, 답은 3칸
iiii) N <= 37 이면, 답은 4칸
위의 예시에서 케이스가 달라질때, 달라지는 값은 부등호 오른쪽에 있는 기준값과, 답이다.
여기서 문제가 되는것은 기준값은데, 기준값 설정을 잘 해 주어야 한다.
다음과 같이 기준값을 t, 답을 cnt로 하여 작성하면 이를 구현할 수 있다.
코드
N = int(input()) t = 1 cnt = 1 while N > t: t += 6 * cnt cnt += 1 print(cnt)
'백준' 카테고리의 다른 글
백준 2447번 별찍기-10 어떻게 풀었나. 재귀함수 사용. 파이썬 (0) 2023.01.15 백준 1193번 어떻게 풀었나 (0) 2023.01.14 백준 1158번 어떻게 풀었나. (0) 2023.01.12 백준 9012번 어떻게 풀었나. 재정의, 추상화, 계획, 검증하기 (0) 2023.01.11 백준 10816번 어떻게 풀었나. (0) 2023.01.10