[프로그래머스] 봉인된 주문 | Java

짱챌·2025년 8월 21일

Algorithm

목록 보기
17/19

📌 문제 정보

[Lv3. 봉인된 주문]


💡 접근 방식

찾고자 하는 위치(n)의 주문보다 앞에 있는 삭제된 주문의 수 만큼 n에 더해주면 된다.

  1. 삭제된 주문 배열 정렬
  2. 배열 돌면서 문자열을 숫자로 변환
  3. 해당 숫자가 n보다 작거나 같다면 n++
  4. n보다 크다면 n을 다시 문자열로 변환

✅ 코드

import java.util.*;

class Solution {
    public String solution(long n, String[] bans) {
        String answer = "";
        
        Arrays.sort(bans, (str1, str2) -> {
            if (str1.length() == str2.length()){
                return str1.compareTo(str2);
            }
            
            return Integer.compare(str1.length(), str2.length());
            
        });
        
        for (String ban: bans){
            int len = ban.length();
            
            long sum = 0;
            
            for (int i=0; i<len; i++){
                long ascii = ban.charAt(i) - 'a' + 1;
                sum += ascii * (long) Math.pow(26, len-i-1);
            }
            
            if (sum <= n){
                n++;
            } else {
                break;
            }

        }
        
        StringBuilder sb = new StringBuilder();
        
        while (n > 0) {
            long rem = n % 26;
            if (rem == 0) {
                rem = 26;
                n -= 26;
            }
            sb.append((char) ( rem + 'a' - 1 ));
            n /= 26;
        }
        
        
        return sb.reverse().toString();
    }
}

🧠 배운 점 & 회고

배열을 모두 숫자로 바꾸고 정렬하는 것도 괜찮을지두..


🧾 결과

profile
애옹: Magic Cat Academy

0개의 댓글