문제 요약
주어진 문장의 알파벳을 일정 거리만큼 밀어서 다른 알파벳으로 변경하는 함수를 만드시오.
- 예) "AB" 문장을 1만큼 밀면 "BC".
나의 생각
"ABCDEFG..." 와 같이 알파벳을 변수로 저장하지 않으면서 시저암호 문제를 구현하려고 하였습니다.
이때 필요한 메서드가 두가지 존재합니다.
- String.prototype.charCodeAt([index]) : 인덱스에 해당하는 문자의 아스키코드값 반환
- String.fromCharCode(number) : 아스키코드에 해당하는 문자 반환
function solution(s, n) {
function getNumber(a) {
return (a <= 'Z'.charCodeAt()
? ['A', 'Z']
: ['a', 'z'])
.map(a => a.charCodeAt())
.map((a, i) => i === 0 ? a : a + 1);
}
return s.split('')
.map(a => a === ' ' ? ' ' : a.charCodeAt())
.map(v => {
if (v === ' ') {
return ' ';
}
const [a, z] = getNumber(v);
return String.fromCharCode((v + n) % z + a * parseInt((v + n) / z));
})
.join('');
}
'알고리즘' 카테고리의 다른 글
[프로그래머스] 피보나치 수 (0) | 2023.03.16 |
---|---|
[프로그래머스] 가장 큰 수 (0) | 2023.03.14 |
[프로그래머스] 실패율 (0) | 2023.03.13 |
[프로그래머스] 성격 유형 검사하기 (0) | 2023.03.10 |
[프로그래머스] 양궁 대회 (0) | 2023.03.10 |