본문 바로가기

Algorithm/CodeUp

[CodeUp_Java] Q2023 : 엑셀의 열 순서

반응형

안녕하세요! Plitche(플리체)입니다.
이번 포스팅의 주제는 Q2023 : 엑셀의 열 순서 (자바, JAVA)입니다.

Intro

Question

문제 설명

대현이는 엑셀을 잘 한다고 자랑하기 위해 정답을 베낀 500점을 자신이 직접한 것이라며 선생님을 농락하고 있다.

선생님은 처음엔 믿었으나 이런 일이 계속되자 거짓임을 눈치채고 대현이에게 프로그래밍 숙제를 내어 주었다.

엑셀에는 행과 열이 있다.

여기서 엑셀의 열 번호는 A, B, C, D, ..., Y, Z 순서로 되어있는데, Z 다음의 열은 AA이다.

그리고 AA, AB, AC, ..., AY, AZ 순서이고, 그 다음은 BA, BB, BC, ..., BY, BZ, CA, CB, ... 이다.

n이 입력되면, n번째 열의 값은 무엇인지 출력하시오.

입력

n이 입력된다. ( 1 <= n <= 999,999,999 )

출력

n번째 열의 값을 출력한다.

예시

  • 입력 : 29
  • 출력 : AC

Solution (풀이)

  • 풀이 : 메모리 11164, 시간 : 61
public class Answer1 {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();
        int number = Integer.parseInt(br.readLine());

        int[] arr = new int[10];
        int index = 0;
        while(number>26) { // 알파벳 개수
            int left = number%26; // 해당 number의 나머지
            if (left==0) {
                left=26;
            }
            arr[index] = left;
            number /= 26;        
            index++;
        }
        arr[index] = number;

        int[] result = new int[index];
        result = arr;

        for (int i=index; i>=0; i--) {
            if (i-1 >= 0 && result[i-1] == 26) {
                sb.append((char)(result[i]+63));    // char타입으로 변환(알파벳으로)              
            } else {
                sb.append((char)(result[i]+64));
            }
        }

        System.out.println(sb);
    }
}

Ranking(순위)

반응형