본문 바로가기
Problem Solving/SWEA

[SWEA] 7272. 안경이 없어!

by 테리는당근을좋아해 2020. 2. 26.

문제

어느 날 경근이는 알파벳 대문자로 이루어진 두 문자열을 비교해야 했는데, 이 날은 공교롭게도 안경이 없었다.

경근이는 매우 눈이 나빠서 안경을 벗으면 문자열을 문자 단위로 구별할 수는 있지만, 두 문자가 정확히 같은 지는 알지 못한다.

특히 알파벳 대문자 같은 경우 문자에 나 있는 구멍의 개수가 같으면 같은 문자이고, 다르면 다른 문자라고 생각한다.

예를 들어 구멍이 하나도 없는 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");
			}
		}
	}
}

 

댓글