728x90
✅ 문제 요약
시력이 좋지않은 경근이는 알파벳에 존재하는 구멍을 통해 두 알파벳이 같은지 다른지 판단한다.
두 영어 문자열이 주어졌을 때 경근이의 시선에서 두 문자열이 같은지 다른지 판단한 결과를 출력하라
🤔 문제 풀이
수많은 구멍개수가 없는 알파벳들을 ArrayList에 넣은
코드를 작성하면 비효율적이고 else로 처리가 가능하기 때문에
상대적으로 원소 개수가 적은 1개 구멍 알파벳들과 2개 구멍 알파벳인 B를
ArrayList<Character>에 add해주었다.
여기서 두 문자열이 다름을 판단하는 기준은
1. 두 문자열의 길이가 다른 경우
2. 두 문자열의 요소 중 동일한 위치에 동일한 구멍 개수를 가진 알파벳이 존재하지 않는 경우이다.
2번의 예로, SAM SBM 은 다르고 SAM SPM은 같은 것이다.
본인은 위치는 고려하지 않고 두 문자열의 전체 알파벳들의 구멍 개수만 같으면 동일한 문자열이다 라는..
어이 없는 실수로 첫번째 시도때 FAIL을 받았다. 위치 또한 고려해야 함에 주의하자
🚨 CODE
import java.util.*;
import java.io.*;
public class Solution {
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 testCase = Integer.parseInt(br.readLine());
for (int t = 1; t <= testCase; t++) {
ArrayList<Character> one = new ArrayList<>();
ArrayList<Character> two = new ArrayList<>();
one.add('A'); one.add('D'); one.add('O'); one.add('P');
one.add('Q'); one.add('R');
two.add('B');
StringTokenizer st = new StringTokenizer(br.readLine());
char[] left = st.nextToken().toCharArray();
char[] right = st.nextToken().toCharArray();
if(left.length != right.length) {
bw.write(String.format("#%d DIFF\n", t));
continue;
}
boolean isSame = true;
for(int i = 0; i<left.length; i++) {
char lc = left[i];
char rc = right[i];
int leftHole = 0; int rightHole = 0;
if(one.contains(lc)) {
leftHole = 1;
}else if(two.contains(lc)){
leftHole = 2;
}
if(one.contains(rc)) {
rightHole = 1;
}else if(two.contains(rc)){
rightHole = 2;
}
if(leftHole != rightHole) {
isSame = false;
break;
}
}
if(isSame) {
bw.write(String.format("#%d SAME\n", t));
}else {
bw.write(String.format("#%d DIFF\n", t));
}
} // testcase
bw.flush();
}
}
728x90
반응형
'코딩테스트' 카테고리의 다른 글
[JAVA-D3] SWEA 3809 - 화섭이의 정수 나열 (0) | 2024.05.08 |
---|---|
[JAVA-D3] SWEA 7193 - 승현이의 수학공부 (0) | 2024.05.06 |
[JAVA-D3] SWEA 1229 - 암호문 2 (0) | 2024.05.03 |
[JAVA-D3] SWEA 5789 - 현주의 상자 바꾸기 (0) | 2024.05.03 |
[JAVA-D3] SWEA 4047 - 영준이의 카드 카운팅 (0) | 2024.05.03 |