728x90
▶ BufferedReader를 활용한 간단한 문제가 있어 정리해보고자 합니다.
문제설명
나의 풀이
문제를 보면 육각형을 이루고 있는 벌집을 중앙의 1부터 시작해서 입력되는 번호 방까지 최소 몇 개의 방을 지나가는지 알아내는 문제입니다.
왼쪽 그림처럼 방 6개가 1개의 layer로 구성되어있습니다.
즉 1개의 방 ➡️ 1 layer (1)
2 ~ 7개의 방 ➡️ 2 layer (1 + 6*1)
8 ~ 19개의 방 ➡️ 3 layer (1 +6 +6*2)
20 ~ 37개의 방 ➡️ 4 layer (1 +6 +12 + 6*3)
위 같은 규칙을 같게 됩니다.
빠른 입력을 위해 BufferedReader 클래스를 사용했습니다.
"나의 풀이"를 설명하자면 layer를 몇 번 돌았는지 계산하기 위하여 while문의 조건에 layer < n라는 조건을 넣어줍니다.
while문 안에는 위에서 말한 규칙대로 6의 배수대로 증가하기 위하여 cnt * 6을 해주고, cnt를 증가시켜 줍니다.
그러면 만약에 N 이 13이 들어오면
layer = 1 + 6 * 1 = 7
layer = 7 + 6 * 2 = 19 -> cnt =3
위와 같이 동작하고 3을 출력하여 마무리했습니다.
참고 ❗
'Coding Test > 백준' 카테고리의 다른 글
[백준] 블랙잭 (BufferedReader, Brute Force, Java) (0) | 2024.05.23 |
---|---|
[백준] 다이얼 (BufferedReader, 5622번, charAt(), contains()) (0) | 2024.05.23 |
[백준] 소수 찾기 (BufferedReader, StringTokenizer, 1978번) (0) | 2024.05.21 |
[백준] 평균은 넘겠지 (BufferedReader, 4344번, stream, StringTokenizer) (0) | 2024.05.21 |
[백준] 단어 공부 (Java, 1157번, BufferedReader, charAt) (0) | 2024.05.20 |