공부하기/백준

[Java] 백준 풀기 12778 - CTP공국으로 이민 가자

XEV 2023. 4. 15. 23:46

자바 백준 12778번

브론즈 2

https://www.acmicpc.net/problem/12778

 

12778번: CTP공국으로 이민 가자

신생국가 CTP공국은 자신들만의 글자가 없다. CTP공국의 왕 준형이는 전 세계 표준 언어인 알파벳을 사용하기로 했다. 하지만 숫자에 미친 사람들이 모인 CTP공국 주민들은 알파벳을 사용할 때 평

www.acmicpc.net

 

 

 

 

 

문제 보기

분류: 구현

 

 

 

 

 

문제 풀기

알파벳과 그에 대응하는 숫자를 일치시키기 위해 ASCII 코드표를 이용한다.

대문자 A 는 ASCII 10 진법으로 변환시 65 에 해당한다.

A 를 1 과 대응시키기 위해 "A" 이전의 문자를 알아보면, 그것은 "@" 이며 ASCII 10 진법으로 표현시 64 이다.

 

문자를 결정하는 "C" 가 입력되었을 때에는 다음줄에 입력되는 각 문자들을 char 타입으로 입력받고 char 타입의 '@' 과 뺄셈 연산으르 하여 입력된 문자에 대응하는 숫자를 구한다.

숫자르르 결정하는 "N" 이 입력되었을 때에는 다음줄에 입력되는 각 숫자에 64 를 더한 후 (char) 타입 형변환을 시행한다.

 

이렇게 서로 대응하는 문자 또는 숫자를 구하고 답안이 원하는 출력 형식에 맞춰 제출한다.

 

백준에서 이 문제의 경우 답안 각 줄의 맨뒤 하나의 빈칸과 맨 마지막줄 개행에 의해 생성되는 빈 줄은 답안에 영향을 주지 않는것이 확인되었다.

 

 

 

 

 

코드 보기

import java.util.Scanner;

public class Main {
    public static void main(String args[]) {
        
        Scanner sc = new Scanner(System.in);
        
        int testCase = sc.nextInt();
        
        for (int i = 0; i < testCase; i++) {
            int m = sc.nextInt();
            String thisType = sc.next();
            
            for (int j = 0; j < m; j++) {
                if (thisType.equals("C")) {
                    char c = sc.next().charAt(0);
                    System.out.print( (c - '@' + " ") );
                }
                else if (thisType.equals("N")) {
                    int n = sc.nextInt();
                    System.out.print( ( (char)(n + 64) + " " ) );
                }
            }
            System.out.println();
        }

    }
}