문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/12926
문제 설명
문장의 각 알파벳을 일정한 거리(n)만큼 밀어서 다른 알파벳으로 바꾸는 문제이다.
제한사항
- 공백은 아무리 밀어도 공백입니다.
- s는 알파벳 소문자, 대문자, 공백으로만 이루어져 있습니다.
- s의 길이는 8,000 이하입니다.
- n은 1 이상, 25 이하인 자연수입니다.
풀이
대문자 영어와 소문자 영어의 문자열을 만든 뒤,
공백 처리를 해주고, 변수의 대소문자를 구분한 다음
해당 변수의 인덱스에 n만큼 더하고 영어의 문자열 길이를 넘어가면 따로 처리해주었다.
✅ Code - 성공
function solution(s, n) {
var answer = '';
let upper = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
let lower = 'abcdefghijklmnopqrstuvwxyz'
for (let i = 0; i < s.length; i++) {
if (s[i] === ' ') {
answer += ' ';
} else {
const upLow = upper.includes(s[i]) ? upper : lower;
let idx = upLow.indexOf(s[i]) + n;
if (idx >= upLow.length) {
idx -= upLow.length;
}
answer += upLow[idx];
}
}
return answer;
}
✅ Code - 아스키코드 사용
function solution(s, n) {
var answer = '';
for (let i = 0; i < s.length; i ++) {
let e_idx = s[i].charCodeAt();
if (e_idx >= 65 && e_idx <= 90) {
e_idx += n;
if (e_idx > 90) {
e_idx -= 26;
}
} else if (e_idx >= 97 && e_idx <= 122) {
e_idx += n;
if (e_idx > 122) {
e_idx -= 26;
}
}
answer += String.fromCharCode(e_idx);
}
return answer;
}
return answer;
}
※ 참고
- 문자를 아스키 번호 변환 => 문자.CharCodeAt()
console.log('A'.charCodeAt()) // 65
console.log('Z'.charCodeAt()) // 90
- 아스키 코드를 문자로 변환 => String.fromCharCode(아스키 번호)
console.log(String.fromCharCode(65)) // 'A'
console.log(String.fromCharCode(90)) // 'Z'
'알고리즘 문제 > 프로그래머스_Lv1 도장깨기' 카테고리의 다른 글
[프로그래머스] 2016년 (Javascript) (0) | 2024.11.07 |
---|---|
[프로그래머스] 약수의 합 (Javascript) (0) | 2024.01.03 |
[프로그래머스] 문자열을 정수로 바꾸기 (Javascript) (1) | 2023.12.20 |
[프로그래머스] 서울에서 김서방 찾기 (Javascript) (0) | 2023.12.18 |
[프로그래머스] 문자열 다루기 기본 (Javascript) (0) | 2023.12.14 |