JS 문자열 치환하기(ft. 프로그래머스 튜플)

dyeon-dev·2025년 6월 18일

자바스크립트

목록 보기
9/10

replace 정규식을 사용한 치환

자바스크립트에서 replace() 함수를 통해 문자열을 치환해줄 수 있다.
하지만 문자열에서 변경하려는 문자열이 여러개일 경우, 첫번째로 발견한 문자열만 치환해준다.
예를 들어 'a', 'a', 'b'에서 replace('a', 'c')를 실행하면 'c', 'a', 'b'의 결과를 얻게 된다.

그렇다면 모든 문자를 변경하려면 어떻게 해야할까?
바로 "정규식"을 사용하면 된다.
정규식으로 찾으려는 문자열은 '/'로 감싸서, 파라미터로 들어가는 값이 정규식임을 알려준다.
그리고 '/'뒤에는 g라는 modifier를 붙여주면 global하게 match하게끔 사용된다.

let str = 'a, a, b';
let replaced_str = str.replace(/a/g, 'c');

추가로, replace() 사용 시 알파벳의 대소문자를 구분하기 때문에, 대소문자를 구분하지 않는 방법으로는 '/'뒤에 i를 붙여주면 된다.

문자열 치환 문제

https://school.programmers.co.kr/learn/courses/30/lessons/64065
프로그래머스 튜플 문제에서 '{}'를 '[]'로 치환해줘야한다.
따라서 s.replace(/{/g, '[').replace(/}/g, ']) 이렇게 사용해준다.
하지만 replace()를 통해서 실제 배열로 반환한 것이 아니라 문자열로 반환해줬기 때문에 JSON.parse()를 통해 실제 배열로 바꿔줘야 한다!

그 이후의 단계는 배열을 크기에 따라 오름차순 정렬을 해줘야 한다.
이때는 arr.sort((a,b)=>a.length-b.length)를 해주면 된다.

Set에다가 순서대로 추가하며 중복 값을 제거해주고 배열로 반환해주면 끝!

전체 코드

function solution(s) {
    const arr = JSON.parse(s.replace(/{/g,"[").replace(/}/g,"]"))
    arr.sort((a, b)=>a.length-b.length)
    
    let set = new Set();
    for(const t of arr) {
        for(const v of t) {
            set.add(v)            
        }
    }
    let answer = [...set]
    return answer;
}
profile
https://github.com/dyeon-dev

0개의 댓글