대문자 문자열 사이에 대시가 들어간 라이센스 키를 변환하는 문제.
접근 방법
1. 새로운 문자로 변환을 위해 기존 문자열을 합치고 대문자로 만들었다.
(=마지막에 대문자 처리를 해줘도 된다.)
2. for문을 역순으로 순회했는데, 해당 문자열의 length가 얼마나 길지
예상이 안될 땐 맨 끝의 index를 활용하기보단 확실하게 존재하는
맨 앞의 index를 활용하는 편이 좋다고 판단해 역순 조회를 실시했다.
3. for문 내부조건 중 i와 dashPosition의 값이 일치한다는 조건만 부여했을 때는
대시가 끝까지 붙게된다. for문 역순회를 했기에 reverse()를 적용했을 때
대시가 문자열 맨 앞에 붙게되는 것을 막기 위해 i !== 0이라는 추가조건을 걸었다.
4. 대시가 필요한 부분의 length에 도달하면 새로운 문자열에 대시를 추가하고
기존의 dashPosition에서 k만큼을 빼서 다음에 대시가 들어갈 length를 설정해주었다.
제출 코드
/**
* @param {string} s
* @param {number} k
* @return {string}
*/
var licenseKeyFormatting = function(s, k) {
let newString ='';
const a = s.split('-').join('').toUpperCase();
let dashPosition = a.length-k;
for(let i=a.length-1; i>=0; i--) {
newString+=a[i];
// i가 dashPosition과 같다는 조건만 줄 시에는 대시가 앞까지 붙는다.
// ex) "W9E2-Z3F5-"를 뒤집게 되면 맨 앞에 대시가 붙는다.
// 그렇기에 i가 0이 아니라는 조건이 필요하다.
if(i === dashPosition && i !== 0) {
newString+= '-';
dashPosition-=k;
}
}
const result = newString.split('').reverse().join('');
return result;
};
'Algorithm' 카테고리의 다른 글
LEETCODE 908. Smallest Range I (0) | 2024.05.06 |
---|---|
Leetcode 682. Baseball Game (0) | 2023.05.18 |
Leetcode 461. Hamming Distance (0) | 2023.03.17 |
Leetcode 414. Third Maximum Number (0) | 2023.03.09 |
Leetcode 409. Longest Palindrome (0) | 2023.03.08 |