[LeetCode] License Key Formatting

아르당·2026년 1월 18일

LeetCode

목록 보기
98/134
post-thumbnail

문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음

Problem

주어진 라이센스 키는 영숫자와 하이픈(-)으로만 구성된 문자열 s이다. 이 문자열은 n개의 하이픈으로 구분된 n + 1개의 그룹으로 나누어져있다. 또한 정수 k가 주어진다.

첫 번째 그룹을 제외한 모든 그룹이 정화깋 k개의 문자를 포함하도록 문자열 s를 재구성해야 한다. 첫 번째 그룹은 k보다 짧을 수 있지만 최소 하나의 문자는 포함해야 한다. 또한 두 그룹 사이에는 반드시 하이픈이 삽입되야 하며, 모든 소문자는 대문자로 변환해야 한다.

재구성된 라이센스 키를 반환해라.

Exapmle

#1
Input: s = "5F3Z-2e-9-w", k = 4
Output: "5F3Z-2E9W"
Explanation: 문자열 s가 두 부분으로 나뉘었고, 각 부분은 4개의 문자로 이루어져 있다. 참고로, 추가된 두 개의 하이픈은 불필요하므로 제거할 수 있다.

#2
Input: s = "2-5g-3-J", k = 2
Output: "2-5G-3J"
Explanation: 문자열 s는 세 부분으로 나뉘었고, 각 부분은 2개의 문자로 구성되어 있다. 단, 첫 번째 부분은 위에서 언급했듯이 더 짧을 수 있으므로 제외되었다.

Constraints

  • 1 <= s.length <= 10^5
  • s는 영문자와 숫자,'-'로 구성된다.
  • 1 <= k <= 10^4

Solved

class Solution {
    public String licenseKeyFormatting(String s, int k) {
        StringBuilder sb = new StringBuilder();

        for(int i = s.length() - 1; i >= 0; i--){
            if(s.charAt(i) != '-'){
                sb.append(sb.length() % (k + 1) == k ? '-' : "").append(s.charAt(i));
            }
        }

        return sb.reverse().toString().toUpperCase();
    }
}
profile
내 마음대로 코드 작성하는 세상

0개의 댓글