문제
어느 날 경근이는 알파벳 대문자로 이루어진 두 문자열을 비교해야 했는데, 이 날은 공교롭게도 안경이 없었다.
경근이는 매우 눈이 나빠서 안경을 벗으면 문자열을 문자 단위로 구별할 수는 있지만, 두 문자가 정확히 같은 지는 알지 못한다.
특히 알파벳 대문자 같은 경우 문자에 나 있는 구멍의 개수가 같으면 같은 문자이고, 다르면 다른 문자라고 생각한다.
예를 들어 구멍이 하나도 없는 CEFGHIJKLMNSTUVWXYZ들을 같은 문자로 생각하고,
구멍이 한 개 나 있는 ADOPQR들을 같은 문자로 생각하며,
구멍이 두 개 나 있는 유일한 문자 B는 유일하게 정확히 알 수 있다.
알파벳 대문자로 이루어진 두 문자열이 주어졌을 때, 경근이는 두 문자열이 같다고 판별하는지 다르다고 판별할 것인가?
풀이방법
{'C','E','F','G','H','I','J','K','L','M','N','S','T','U','V','W','X','Y','Z'},
{'A','D','O','P','Q','R'},
{'B'} 로 이루어진 세 개의 배열을 만들고
입력받은 두 문자열의 문자를 하나씩 뽑아 각 문자가 어느 배열에 속해 있는지, 또 각 문자가 속해 있는 배열이 같은지
검사한다.
소스코드
package samsung;
import java.util.*;
public class s_7272 {
static char[] one = {'C','E','F','G','H','I','J','K','L','M','N','S','T','U','V','W','X','Y','Z'};
static char[] two = {'A','D','O','P','Q','R'};
static char[] three = {'B'};
public static void main(String[]args) {
Scanner sc = new Scanner(System.in);
int tc = sc.nextInt();
for(int t = 1; t <= tc; t++) {
String a = sc.next();
String b = sc.next();
int flag = 1;
int a_s;
int b_s;
if(a.length() != b.length()) {
flag = 0;
}
else {
for(int i = 0; i < ((a.length() < b.length()) ? a.length() : b.length()); i++) {
a_s = 0;
b_s = 0;
for(int j = 0; j < one.length; j++) {
if(a.charAt(i) == one[j])
a_s = 1;
if(b.charAt(i) == one[j])
b_s = 1;
}
for(int j = 0; j < two.length; j++) {
if(a.charAt(i) == two[j])
a_s = 2;
if(b.charAt(i) == two[j])
b_s = 2;
}
for(int j = 0; j < three.length; j++) {
if(a.charAt(i) == three[j])
a_s = 3;
if(b.charAt(i) == three[j])
b_s = 3;
}
if(a_s != b_s) {
flag = 0;
break;
}
}
}
if(flag == 0) {
System.out.println("#" + t + " " + "DIFF");
}else {
System.out.println("#" + t + " " + "SAME");
}
}
}
}
'Problem Solving > SWEA' 카테고리의 다른 글
[SWEA] 8457. 알 덴테 스파게티 (0) | 2020.02.26 |
---|---|
[SWEA] 5986. 새샘이와 세 소수 (0) | 2020.02.26 |
[SWEA] 5215. 햄버거 다이어트 (0) | 2020.02.25 |
[SWEA] 9317. 석찬이의 받아쓰기 (0) | 2020.02.25 |
[SWEA] 9280. 진용이네 주차타워 (0) | 2020.02.25 |
댓글