FrontEnd/프로그래머스

[JS] 압축

728x90

오히려 Map 자료형을 활용하면 좀 더 쉽게 풀 수 있던 문제였다.

 

 

ABCDEFG....Z 까지를 각각 1 ~ 26까지 값으로 Map 자료형에 입력한 이후, 단어를 만들어 나가면서 Map에 없을때까지 단어를 만든 이후 단어를 추가해주면 된다.

 

 

 

function solution(msg) {
    const map = new Map()
    let mapSize = 27
    const ret = []
    
    for (let i = 0 ; i < 26 ; i++) {
        map.set(String.fromCharCode(i+65) , i+1)
    }
    
    for (let i = 0 ; i < msg.length ; i++) {
        let word = msg[i]
        while(1) {
            const nWord = word + msg[i+1]
            if (map.get(nWord)) {
                word = nWord
                i++
            }
            else break
        }
        
        ret.push(map.get(word))
        map.set(word + msg[i+1],mapSize++)
      
    }
    
    return ret
}
728x90

'FrontEnd > 프로그래머스' 카테고리의 다른 글

[JS] 캐시  (0) 2023.07.14
[JS] 방금 그곡  (0) 2023.07.14
[JS] 파일명 정렬  (0) 2023.07.13
[JS] N진수 게임  (0) 2023.07.11
[JS] JaDenCase 만들기  (0) 2023.07.11