[백준/BOJ] 17828. 문자열 화폐 [Gold 5]

jychan99·2023년 10월 27일
0

  1. 문자열 화폐
    문제출처 : https://www.acmicpc.net/problem/17828
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.time.Duration;
import java.time.Instant;
import java.util.StringTokenizer;

public class baekjoon17828 {
    static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    static StringTokenizer st;
    public static void main(String args[]) throws IOException{
        int N,X;
        st = new StringTokenizer(br.readLine()," ");
        N = Integer.parseInt(st.nextToken());
        X = Integer.parseInt(st.nextToken());
        char[] arr = new char[N];

        for(int i=0;i<N;i++){
            arr[i] = 'A';
        }
        
        if(26*N<X || N > X){
            System.out.println("!");
        }else{
            X-=N;
            for(int i=N-1;i>=0;i--){
                if(X>=26){
                    //1이 더 빠졌다...
                    X-=25;
                    arr[i] += 25;
                }else{
                    arr[i] += X;
                    break;
                }
            }
            System.out.println(arr);
        }
        }

    }

여러 방법이 있겠지만, 나는 아스키코드값을 이용했다. 전부 A(65)로 초기화해놓고 X가 26보다 크면 기존1(문자로는 A)에 25를 더해서 Z를 만들어주고, 26보다 작아지면 그대로 더해주었다.
물론 사전순이니까 반복문은 뒤에서부터 돌았다.
알고리즘은 비교적 쉬운데, 문제 제출 시간제한에 계속걸려서 실패했는데,
줄이고 줄이고 간결하게 해도 계속 실패했었는데
결국 원인은 import에서 안쓰는import java.util.Arrays;이 문제였던것 같다..
허무..

profile
내가 지금 두려워 하고 있는 일이 바로 내가 지금 해야 할 일이다. 🐥

0개의 댓글