https://school.programmers.co.kr/learn/courses/30/lessons/155652
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
✓ 풀이과정
1. 전달받은 문자열(sIdx)과 건너뛸 문자열(skipIdx)을 코드값으로 변환하여 저장
2. skipIdx 배열을 순회하며 하나의 코드마다 index만큼 +1 씩 추가하는데
만약 건너뛸 코드값을 만난다면 index를 하나씩 늘려가며 건너뛴 문자를 제외하고 index값 만큼 증가
3. 다시 코드를 문자열로 변환하여 반환
알파벳 배열을 저장해서 푸는 방법도 있지만 js에서 문자 ↔ 코드 변환해주는 메서드를 사용해서 풀어보게 되었습니다
z 를 넘어가면 다시 a 로 돌아가는 조건을 알파벳 개수인 26을 나눈 나머지로 계산해서 해결했습니다
(a: 0, b: 1 ... z: 25, a: 26%26=0)
✓ 최종코드
function solution(s, skip, index) {
let sIdx = s.split("").map((str) => str.charCodeAt(0) - 97);
let skipIdx = skip.split("").map((str) => str.charCodeAt(0) - 97);
for (let i = 0; i < sIdx.length; i++) {
let cnt = index;
for (let j = 0; j < cnt; j++) {
sIdx[i] = (sIdx[i] + 1) % 26;
if (skipIdx.includes(sIdx[i])) cnt++;
}
}
return sIdx.map((i) => String.fromCharCode(97 + i)).join("");
}'프로그래머스 > Lv1' 카테고리의 다른 글
| [프로그래머스/Javascript] Lv.1 대충 만든 자판 (0) | 2026.01.21 |
|---|---|
| [프로그래머스/Javascript] Lv.1 문자열 나누기 (0) | 2026.01.21 |
| [프로그래머스/Javascript] Lv.1 2016년 (0) | 2026.01.19 |
| [프로그래머스/Javascript] Lv.1 공원 산책 (0) | 2026.01.19 |
| [프로그래머스/Javascript] Lv.1 완주하지 못한 선수 (0) | 2026.01.15 |