https://school.programmers.co.kr/learn/courses/30/lessons/155652
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제
예를 들어 s = "aukks", skip = "wbqd", index = 5일 때, a에서 5만큼 뒤에 있는 알파벳은 f지만 [b, c, d, e, f]에서 'b'와 'd'는 skip에 포함되므로 세지 않습니다. 따라서 'b', 'd'를 제외하고 'a'에서 5만큼 뒤에 있는 알파벳은 [c, e, f, g, h] 순서에 의해 'h'가 됩니다. 나머지 "ukks" 또한 위 규칙대로 바꾸면 "appy"가 되며 결과는 "happy"가 됩니다.
두 문자열 s와 skip, 그리고 자연수 index가 매개변수로 주어질 때 위 규칙대로 s를 변환한 결과를 return하도록 solution 함수를 완성해주세요.
제한사항
- 5 ≤ s의 길이 ≤ 50
- 1 ≤ skip의 길이 ≤ 10
- s와 skip은 알파벳 소문자로만 이루어져 있습니다.
- skip에 포함되는 알파벳은 s에 포함되지 않습니다.
- 1 ≤ index ≤ 20
코드
function solution(s, skip, index) {
var answer = '';
let alphabet = 'abcdefghijklmnopqrstuvwxyz';
let nextnum = 0;
// alphabet 문자열에서 skip의 요소를 제거
for (let j = 0; j < skip.length; j++){
alphabet = alphabet.split(skip[j]).join('');
}
// s를 돌아야 한다.
for(let i = 0; i < s.length; i++){
nextnum = (alphabet.indexOf(s[i])+index) % (26-skip.length);
answer = answer + alphabet[nextnum];
}
return answer;
}
풀이과정:
먼저 skip할 알파벳을 어떻게 구현을 할까 생각을 하다가 제한사항에서 skip은 s에 포함되지 않는 조건을 보고 alphabet함수를 하드코딩해서 skip요소를 제거해 주었습니다.
그다음 for문으로 s의 요소를 돌아서 index뒤의 알파벳을 alphabet에서 찾아 answer에 넣어주었습니다.
'알고리즘 > test' 카테고리의 다른 글
javascript) 프로그래머스 - 크기가 작은 부분문자열 (0) | 2023.02.06 |
---|---|
javascript) 프로그래머스 - 개인정보 수집 유효기간 (0) | 2023.02.05 |
Math.sqrt() (0) | 2023.02.04 |
javascript) 프로그래머스 - 제곱수 판별하기 (0) | 2023.01.10 |
javascript) 프로그래머스 - 세균증식 (0) | 2023.01.10 |