728x90
https://www.acmicpc.net/problem/9229
문제
단어 사다리란 퍼즐의 한 종류인데, 두 단어가 주어지면 한 단어에서 한 글자씩 바꿔서 다른 단어를 만드는 것이다. 이 게임은 좋은 어휘력과 맞춤법이 필요하다. 그래서 정답인지 아닌지 확인하는 게 너무 지루하고 귀찮다.
한 쌍의 단어가 단어 사다리가 되는 조건은 다음과 같다:
- 단어의 길이가 같고
- 반드시 한 글자씩 바뀌어야한다.
단어 사다리가 가능한 지 판별하는 프로그램을 작성하시오.
입력
입력이 여러 번 주어지는데, #이 입력되기 전까지를 하나의 테스트케이스로 간주한다.
각 테스트케이스는 3자 이상 20자 이하의 대문자 알파벳으로 된 단어들이 순서대로 입력된다. 입력의 마지막 줄에는 #이 주어진다.
출력
단어 사다리가 가능하다면 'Correct'를, 아니면 'Incorrect'를 출력한다.
728x90
예제 입력 1
BARK
BARE
#
BEAK
BRAK
BRAD
BEAD
#
BEAK
BEAD
BEND
LEND
LAND
LANE
LAKE
#
MAKE
BAKE
BONK
BONE
BANE
#
#
예제 출력 1
Correct
Correct
Correct
Incorrect
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
// 단어 사다리 가능 조건
// 1. 먼저 입력 받은 단어와 다음 입력 받은 단어, 두 단어의 길이가 같아야 함
// 2. 두 단어가 한글자만 달라야 함
boolean correct = true;
char[] c2 = br.readLine().toCharArray();
while(true) {
char[] c1 = c2;
c2 = br.readLine().toCharArray(); // 다음 문자 입력
if(c2[0] == '#') { // 입력 받은 단어가 '#'일때
if(c1[0] == '#') { // '#'이 연속으로 두 번 나왔다면 반복문 탈출
break;
}
else { // 하나의 단어 사다리가 끝난 경우
if(correct) {
sb.append("Correct\n"); // 끝난 단어 사다리의 결과 저장
}
else {
sb.append("Incorrect\n");
}
correct = true;
continue; // 새로운 단어 하나를 더 입력 받으러 감.
}
}
if(c1[0] == '#') { // 단어 하나 더 입력 받으러 감
continue;
}
// 이미 단어 사다리가 불가능하면 조건을 확인하지 않음
if(correct) {
// 조건1. 단어의 길이가 같은지 확인
if(c1.length != c2.length) { // 같지 않다면
correct = false;
continue;
}
// 조건2. 단어가 하나만 다름
int count = 0;
for (int i = 0; i < c1.length; i++) {
if(c1[i] != c2[i]) count++; // 같지 않은 단어가 나오면 카운트해줌
}
if(count != 1) { // 다른 단어가 딱 1개가 아니면
correct = false;
}
}
}
// 답 출력
System.out.println(sb);
}
}
728x90
'Problem Solving > BOJ' 카테고리의 다른 글
[백준, BOJ 10971] 외판원 순회 2 (java) (0) | 2023.02.16 |
---|---|
[백준, BOJ 14712] 넴모넴모 (Easy) (java) (0) | 2023.02.16 |
[백준, BOJ 17406] 배열 돌리기 4 (java) (0) | 2023.02.16 |
[백준, BOJ 1182] 부분수열의 합 (java) (0) | 2023.02.15 |
[백준, BOJ 16507] 어두운 건 무서워 (java) (0) | 2023.02.15 |