반응형

@notepad_jj2

츄르사려고 코딩하는 코집사입니다.


1. [SW expert Academy] SWEA 7272번 안경이 없어! 자바(Java)

1) 난이도 : D3

 

2) 문제번호 : 7272번

 

3) 문제 출처

swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWl0ZQ8qn7UDFAXz&categoryId=AWl0ZQ8qn7UDFAXz&categoryType=CODE&problemTitle=7272&orderBy=FIRST_REG_DATETIME&selectCodeLang=ALL&select-1=&pageSize=10&pageIndex=1

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

2. 문제

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

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

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

예를 들어 구멍이 하나도 없는 CEFGHIJKLMNSTUVWXYZ들을 같은 문자로 생각하고,

구멍이 한 개 나 있는 ADOPQR들을 같은 문자로 생각하며,

구멍이 두 개 나 있는 유일한 문자 B는 유일하게 정확히 알 수 있다.

알파벳 대문자로 이루어진 두 문자열이 주어졌을 때, 경근이는 두 문자열이 같다고 판별하는지 다르다고 판별할 것인가?

 

3. 제약사항

 

4. 입력

첫 번째 줄에 테스트 케이스의 수 T가 주어진다.

각 테스트 케이스의 첫 번째 줄에는 두 문자열이 공백 하나로 구별되어 주어진다.

각 문자열은 알파벳 대문자 만으로 이루어져 있으며, 길이는 10이하이다.

 

5. 출력

각 테스트 케이스마다 ‘#x’(x는 테스트케이스 번호를 의미하며 1부터 시작한다)를 출력하고,

경근이가 주어진 두 문자열을 같은 것으로 생각하면 “SAME”을, 다른 것으로 생각하면 “DIFF”를 출력한다.

 

6. 풀이

- 2개의 배열에 넣어 구멍에 따라 int형 배열에 넣어 배열 비교

7. 소스 코드

import java.util.*;

public class Solution {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int T = sc.nextInt(); // 테스트 케이스의 개수
		
		for(int tc=1;tc<=T;tc++) {
			String a = sc.next();
			String b = sc.next();
			
			int[] arr = new int[a.length()];
			int[] arr2 = new int[b.length()];
			
			//B를 받으면 배열에 2, ADOPQR을 받으면 배열에 1, 나머지는 0 입력
			for(int i=0;i<a.length();i++) {
				String a_result = a.substring(i,i+1);
				if(a_result.equals("B")) arr[i] = 2;
				else if(a_result.equals("A")||a_result.equals("D")||a_result.equals("O")||a_result.equals("P")||a_result.equals("Q")||a_result.equals("R")) arr[i] = 1;
				else arr[i] = 0;
			}
			
			//B를 받으면 배열에 2, ADOPQR을 받으면 배열에 1, 나머지는 0 입력
			for(int i=0;i<b.length();i++) {
				String b_result = b.substring(i,i+1);
				if(b_result.equals("B")) arr2[i] = 2;
				else if(b_result.equals("A")||b_result.equals("D")||b_result.equals("O")||b_result.equals("P")||b_result.equals("Q")||b_result.equals("R")) arr2[i] = 1;
				else arr2[i] = 0;
			}
			
			//arr과 arr2가 같으면 SAME, 다르면 DIFF 출력
			if(Arrays.equals(arr, arr2)) System.out.printf("#%d SAME\n",tc);
			else System.out.printf("#%d DIFF\n",tc);
		}
	}
}

 

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기