공부하기/백준

[Java] 백준 풀기 21734 - SMUPC의 등장

XEV 2023. 4. 8. 23:39

자바 백준 21734번

브론즈 2

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

 

21734번: SMUPC의 등장

2021년 5월 8일 SMUPC 대회의 첫 개최에 신이 난 화은이는 SMUPC를 기념하기 위해 "SMUPC"를 예술적으로 출력하는 프로그램을 작성하고자 했다. 화은이는 각 알파벳에 해당하는 아스키코드 값을 10진

www.acmicpc.net

 

 

 

 

 

문제 보기

분류: 구현, 문자열

 

 

 

 

 

문제 풀기

이 문제를 푸는데 toCharArray() 함수를 사용하면서 형변환이 여러번 이루어졌다.

 

입력된 String 문자열을 toCharArray() 로 분리하여 저장한다.

각 알파벳이 char 타입으로 분리저장된 array 에서 10진수 ASCII 코드로 변환하고, 이 10진수의 각 자리숫자를 더하기 위해 String 타입으로 변환하고 toCharArray 로 분리 저장한다.

각 자릿수가 분리 저장된 array 에서 각 char 타입 숫자를 빼내어 " - '0' " 방법을 사용하여 int 형으로 변환후 tempSum 에 누적 덧셈을 저장한다.

각 알파벳에 대해 for each 를 돌리면서 빼낸 알파벳과 계산된 tempSum을 통해서 문제에서 제시한 형태로 출력한다.

 

 

 

 

 

코드 보기

import java.util.Scanner;

public class Main {
    public static void main(String args[]) {
        
        Scanner sc = new Scanner(System.in);
        
        char[] s = sc.next().toCharArray();  // 입력받은 String 타입의 문자를 char array 로 바꿔 저장.
        
        for (char c : s) {
            // System.out.println((c - 0)+"");  // TEXT PRINT
            char[] charDec = ((c - 0)+"").toCharArray();  // char 로 저장된 각 문자를 ASCII Dec 로 바꾸고, 변경된 10진수를 String 으로 변환후, 각 자리를 char array 에 저장.
            
            int tempSum = 0;  // 10진수의 각 자리를 더하기 위해 지정한 변수.
            for (char cDec : charDec) {  // 10진수를 나눠 저장한 array 에서 각 value 를 하나씩 꺼냄.
                tempSum += cDec - '0';  // 각 char value 를 
                // System.out.println(cDec - '0').getClass().getName();  // TEXT PRINT
                // printType(cDec - '0');  // TEXT PRINT TO CHECK TYPE
            }
            // System.out.println(tempSum);  // TEXT PRINT
            
            System.out.println((c + "").repeat(tempSum));  // 하나씩 빼낸 알파벳과 ASCII Dec 합 결과를 통해 결과 출력.
        }

    }
    
    // 모르는 변수의 타입을 확인하기 위한 함수.
    public static void printType(Object unknownVariable) {
        if (unknownVariable instanceof String) {
            System.out.println("The unknown variable is a String");
        } else if (unknownVariable instanceof Character) {
            System.out.println("The unknown variable is a char");
        } else if (unknownVariable instanceof Integer) {
            System.out.println("The unknown variable is an int");
        } else {
            System.out.println("The type of the unknown variable is unknown");
        }
    }

}

 

 

 

 

 

추가 하기

변수 String, char, int 에 대해 타입을 확인하기 위한 함수.

    // 모르는 변수의 타입을 확인하기 위한 함수.
    public static void printType(Object unknownVariable) {
        if (unknownVariable instanceof String) {
            System.out.println("The unknown variable is a String");
        } else if (unknownVariable instanceof Character) {
            System.out.println("The unknown variable is a char");
        } else if (unknownVariable instanceof Integer) {
            System.out.println("The unknown variable is an int");
        } else {
            System.out.println("The type of the unknown variable is unknown");
        }
    }