- 문자열 s와 거리 n이 주어집니다.
- 공백은 그대로 공백 입니다.
- s는 알파벳 소문자, 대문자, 공백입니다.
- n은 1 이상, 25이하인 자연수입니다.
공백을 제외한 문자들을 변경
function solution(s, n) {
s.replace(/[a-z]/gi/, function() {})
}
변경 될 문자는 원래 문자를 n이라는 숫자만큼 뒤에 위치한 문자 ('z'는 1만큼 밀면 'a')
문자의 코드를 charCodeAt()으로 확인
function solution(s, n) {
s.replace(/[a-z]/ig, function(c) {
var code = c.charCodeAt()
var newCode = 0;
newCode = code > 64 && code < 91 ? ((code + n - 39) % 26) + 65 : ((code + n - 71) % 26) + 97;
return c = String.fromCharCode(newCode);
});
}
제가 계산한 방법은 대문자 A를 기준으로 설명하면
1. 65를 26만 남도록 39라는 숫자를 빼줍니다. 65 - 39
2. 이 숫자를 26으로 나눴을 때 나머지가 0이면 A 1이면 B 2이면 C가 됩니다. ( 65 - 39 ) % 26
3. n만큼 뒤에 있는 문자를 구해야하기 때문에 +n을 더했을 때의 나머지를 구해줍니다. ( 65 - 39 + n ) % 26
4. String.fromCharCode() 메서드를 사용해 원하는 알파벳을 구하려면 코드가 0부터가 아닌 65부터 시작해야 하므로 65라는 숫자는 더해줍니다. ( ( 65 - 39 + n ) % 26 ) + 65
소문자의 계산 방법도 동일합니다.
71을 이라는 숫자는 위의 설명 1번과 동일하게 26만 남도록 빼준 숫자 입니다. 97 - 71 = 26
최종 코드
function solution(s, n) {
var answer = '';
answer = s.replace(/[a-z]/ig, function(c) {
var code = c.charCodeAt()
var newCode = 0;
newCode = code > 64 && code < 91 ? ((code + n - 39) % 26) + 65 : ((code + n - 71) % 26) + 97;
return c = String.fromCharCode(newCode);
});
return answer;
}
'프로그래머스 > JavaScript' 카테고리의 다른 글
[프로그래머스 JavaScript] Level1 직사각형 별찍기 (0) | 2020.04.17 |
---|---|
[프로그래머스 JavaScript] Level1 이상한 문자 만들기 (0) | 2020.04.03 |
[프로그래머스 JavaScript] Level1 문자열 내 마음대로 정렬하기 (0) | 2020.03.31 |
[프로그래머스 JavaScript] Level1 자릿수 더하기 (0) | 2019.02.13 |
[프로그래머스 JavaScript] Level1 소수 찾기 (0) | 2019.02.13 |