Algorithm

Leetcode 482. License Key Formatting

KANG_G1 2023. 3. 20. 11:03

대문자 문자열 사이에 대시가 들어간 라이센스 키를 변환하는 문제.


접근 방법

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;

};