https://www.acmicpc.net/problem/1364
육각형 블록으로 이루어진 판에서 육각형 N개로 울타리를 칠 때, 울타리를 포함한 영역의 최대 크기를 구하는 문제이다.
N 크기별로 최대 크기의 영역을 그려본 결과, N < 6 구간에서는 울타리 안에 공간을 둘 수 없으므로 영역의 최대 크기는 N이다.
if (n < 6) {
System.out.print(n);
return;
}
N > 6의 경우, 6의 배수에서는 이전의 영역 증가량 +1 만큼, 6의 배수+1 에서는 이전의 영역 증가량 -1 만큼, 6의 배수+2 에서는 이전의 영역 증가량 +1 만큼 영역의 최대 크기가 증가하였다. 이외의 구간에서는 이전의 영역 증가량 만큼 영역이 증가하였으며, 이러한 수열이 나열되는 구조이다.
long answer = 5;
long inc = 1;
for (int i = 6; i <= n; i++) {
if (i % 6 == 0) {
answer += ++inc;
} else if (i % 6 == 1) {
answer += inc - 1;
} else {
answer += inc;
}
}
결과 코드는 다음과 같다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class 울타리치기1364 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
br.close();
if (n < 6) {
System.out.print(n);
return;
}
long answer = 5;
long inc = 1;
for (int i = 6; i <= n; i++) {
if (i % 6 == 0) {
answer += ++inc;
} else if (i % 6 == 1) {
answer += inc - 1;
} else {
answer += inc;
}
}
System.out.print(answer);
}
}
'알고리즘(백준 등) 공부 > 백준(자바)' 카테고리의 다른 글
| 백준 1368번: 물대기 (0) | 2026.04.11 |
|---|---|
| 백준 1365번: 꼬인 전깃줄 (0) | 2026.04.10 |
| 백준 1361번: 두 스트링 마스크 (0) | 2026.04.09 |
| 백준 1360번: 되돌리기 (0) | 2026.04.08 |
| 백준 1359번: 복권 (0) | 2026.04.07 |