문제(출처: https://www.acmicpc.net/problem/4921)
< 나무 블록 >
문제 풀이
각 블록의 오른쪽에 올 수 있는 블록인지 판단한다.
1, 3 -> 4, 5
2 -> x
4, 6 -> 2, 3
5, 7 -> 8
8 -> 6, 7
my solution (Java)
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class _4921_ { // 나무 블록
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
String str = "";
int idx = 1;
while (!(str = bf.readLine()).equals("0")) {
boolean flag = false;
for (int i = 0; i < str.length() - 1; i++) {
if (str.charAt(0) != '1' || str.charAt(str.length() - 1) != '2') {
flag = true;
break;
}
if (str.charAt(i) == '1' || str.charAt(i) == '3') {
if (str.charAt(i + 1) == '4' || str.charAt(i + 1) == '5') {
continue;
} else {
flag = true;
break;
}
} else if (str.charAt(i) == '2') {
flag = true;
break;
} else if (str.charAt(i) == '4' || str.charAt(i) == '6') {
if (str.charAt(i + 1) == '2' || str.charAt(i + 1) == '3') {
continue;
} else {
flag = true;
break;
}
} else if (str.charAt(i) == '5' || str.charAt(i) == '7') {
if (str.charAt(i + 1) == '8') {
continue;
} else {
flag = true;
break;
}
} else if (str.charAt(i) == '8') {
if (str.charAt(i + 1) == '6' || str.charAt(i + 1) == '7') {
continue;
} else {
flag = true;
break;
}
}
}
if (str.length() == 1) {
flag = true;
}
if (flag) {
bw.write(idx + ". NOT\n");
} else {
bw.write(idx + ". VALID\n");
}
idx++;
}
bw.flush();
}
}
변수)
str : 조각 정보
idx : 테스트 케이스 번호
flag : 배치 올바른지 여부
입력으로 0이 들어올 때까지 다음 과정을 반복한다.
1) 입력받은 조각 탐색
2) 맨 앞과 맨 뒤가 1번과 2번이 아니라면 올바른 배치가 아니므로 종료
3) 1, 3 -> 4, 5 / 2 -> x / 4, 6 -> 2, 3 / 5, 7 -> 8 / 8 -> 6, 7 조건에 맞지 않다면 올바른 배치가 아니므로 종료
4) 만약 입력받은 조각의 개수가 1개라면 올바른 배치가 아니므로 종료
올바른 배치라면 VALID를, 올바른 배치가 아니라면 NOT을 출력한다.
'🌞Algorithm > 🔥Baekjoon' 카테고리의 다른 글
[Baekjoon] 2304_창고 다각형 (0) | 2024.08.05 |
---|---|
[Baekjoon] 2508_사탕 박사 고창영 (0) | 2024.08.02 |
[Baekjoon] 5619_세 번째 (0) | 2024.07.30 |
[Baekjoon] 10799_쇠막대기 (0) | 2024.07.26 |
[Baekjoon] 15705_단어 찾기 (1) | 2024.07.25 |