처음부터 차근차근
최소로 거치는 벌집 개수 구하기 본문
반응형
문제
https://www.acmicpc.net/problem/2292
2292번: 벌집
위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다. 숫자 N이 주어졌
www.acmicpc.net
문제 이미지만 보면 엄청 복잡할 것같고, 풀기 싫어지는데 조금만 생각해보면 쉽게 풀 수 있는 문제였다.
내 풀이
이런 류의 문제들은 제일 먼저 규칙성을 찾아야한다.
1에서 부터 차례대로 주변 벌집이 확장되는데 각 개수가 6의 배수만큼 늘어나는 걸 알 수 있다.
그래서 어느 구간에 있는지만 알면 최소로 거칠 수 있는 벌집의 개수를 쉽게 구할 수 있다.
나는 if문의 구간을 6의 배수만큼 차례대로 늘려가며 구간을 찾아 어느 구간인지 출력하는 방식으로 풀었다.
import java.io.*;
public class Main
{
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int input = Integer.parseInt(br.readLine());
if (input == 1) {
bw.write("1");
}
else {
int i = 0;
int first = 1;
while (true) {
first += (6 * i);
if (input > first && input <= first + (6 * (i + 1))) {
bw.write(String.valueOf(i + 2));
break;
}
i++;
}
}
bw.close();
br.close();
}
}
반응형
'알고리즘' 카테고리의 다른 글
acm 호텔 문제 (0) | 2022.12.25 |
---|---|
달팽이는 올라가고 싶다 - 문제풀이(수정 중) (0) | 2022.10.23 |
이친수 구하기 - 동적계획법 (2) | 2022.10.14 |
그리디 알고리즘 (0) | 2022.10.13 |
DFS, BFS 알고리즘 (0) | 2022.10.10 |
Comments