문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음
주어진 라이센스 키는 영숫자와 하이픈(-)으로만 구성된 문자열 s이다. 이 문자열은 n개의 하이픈으로 구분된 n + 1개의 그룹으로 나누어져있다. 또한 정수 k가 주어진다.
첫 번째 그룹을 제외한 모든 그룹이 정화깋 k개의 문자를 포함하도록 문자열 s를 재구성해야 한다. 첫 번째 그룹은 k보다 짧을 수 있지만 최소 하나의 문자는 포함해야 한다. 또한 두 그룹 사이에는 반드시 하이픈이 삽입되야 하며, 모든 소문자는 대문자로 변환해야 한다.
재구성된 라이센스 키를 반환해라.
#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개의 문자로 구성되어 있다. 단, 첫 번째 부분은 위에서 언급했듯이 더 짧을 수 있으므로 제외되었다.
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();
}
}