개발에 AtoZ까지

[JAVA][D3] 10804. 문자열의 거울상 본문

코딩테스트 준비/SWEA

[JAVA][D3] 10804. 문자열의 거울상

AtoZ 개발자 2021. 3. 2. 23:39
반응형

문제 


‘b’, ‘d’, ‘p’, ‘q’로 이루어진 문자열이 주어진다. 이 문자열을 거울에 비추면 어떤 문자열이 되는지 구하는 프로그램을 작성하라.

예를 들어, “bdppq”를 거울에 비추면 “pqqbd”처럼 나타날 것이다.

 

[입력]

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

각 테스트 케이스의 첫 번째 줄에는 ‘b’, ‘d’, ‘p’, ‘q’만으로 이루어진 하나의 문자열이 주어진다. 문자열의 길이는 1이상 1000이하이다.

 

[출력]

각 테스트 케이스마다 주어진 문자열을 거울에 비춘 문자열로 출력한다.

예시

 

풀이

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Map;

class Solution
{
//전역변수
	public static Map<Character, Character> map = new HashMap<Character, Character>();

	public static void main(String[] args) throws NumberFormatException, IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int T = Integer.parseInt(br.readLine());
		//문자 케이스 등록
		map.put('p', 'q');
		map.put('q', 'p');
		map.put('b', 'd');
		map.put('d', 'b');
		
		for(int i=1;i<=T;i++) {
			String inputStr = br.readLine();
			System.out.println("#"+i+" "+ mirror(inputStr));
		}
	}
	
	public static String mirror(String inputStr) {
		StringBuilder sb = new StringBuilder();
		//문자의 끝 부분부터 접근하여 반대문자를 출력한다.
		for(int i = inputStr.length()-1;i>=0;i--) {
			sb.append(map.get(inputStr.charAt(i)));
		}
		return sb.toString();
	}
}
반응형
Comments