BIG
문제 설명
문제 풀이
시저 암호의 대소문자 구문이 조금 어려웠던 문제였다. 나의 풀이는 크게 4가지 단계로 나뉘어져 있다.
1. 알파벳들을 모두 배열로 바꾼다.
let lower = 'abcdefghijklmnopqrstuvwxyz'
let upper = lower.toUpperCase();
let arrLower = lower.split('');
let arrUpper = upper.split('');
let arrTempIndex = [];
let answer = [];
2. 받아온 문자열 s의 배열을 알파벳 배열에서 찾아 인덱스 번호로 바꿔준다.
for(let i = 0; i <= s.length - 1; i++) {
if(s[i] === ' ') {
arrTempIndex.push(' ');
} else if(s[i]===s[i].toLowerCase()){
arrTempIndex.push(arrLower.indexOf(s[i]));
} else {
arrTempIndex.push(arrUpper.indexOf(s[i]));
}
}
3. 인덱스 번호를 n만큼 증가 시킨다.
let arrPlusIndex = arrTempIndex.map(x => (x + n) % arrLower.length);
4. 증가 시킨 인덱스 번호로 알파벳 배열에서 결과로 넣어준다.
for(let i = 0; i <= arrTempIndex.length - 1; i++) {
if(arrTempIndex[i] === ' ') {
answer.push(' ');
} else if(s[i]===s[i].toLowerCase()) {
answer.push(arrLower[arrPlusIndex[i]]);
} else {
answer.push(arrUpper[arrPlusIndex[i]]);
}
}
return answer.join('') ;
5. 전체 코드
function solution(s, n) {
let lower = 'abcdefghijklmnopqrstuvwxyz'
let upper = lower.toUpperCase();
let arrLower = lower.split('');
let arrUpper = upper.split('');
let arrTempIndex = [];
let answer = [];
// s인 인덱스 값을 lower배열에서 찾아 인덱스 값 담기
for(let i = 0; i <= s.length - 1; i++) {
if(s[i] === ' ') {
arrTempIndex.push(' ');
} else if(s[i]===s[i].toLowerCase()){
arrTempIndex.push(arrLower.indexOf(s[i]));
} else {
arrTempIndex.push(arrUpper.indexOf(s[i]));
}
}
// n만큼 증가한 인덱스 값 추출하기
let arrPlusIndex = arrTempIndex.map(x => (x + n) % arrLower.length);
// 받아온 인덱스 값으로 띄어쓰기는 다시 띄어쓰기 하고 소문자라면 소문자꺼 넣고 아니면 대문자꺼 넣는다.
for(let i = 0; i <= arrTempIndex.length - 1; i++) {
if(arrTempIndex[i] === ' ') {
answer.push(' ');
} else if(s[i]===s[i].toLowerCase()) {
answer.push(arrLower[arrPlusIndex[i]]);
} else {
answer.push(arrUpper[arrPlusIndex[i]]);
}
}
return answer.join('') ;
}
실행 결과
코드 채점하고 제출
LIST
'프로그래머스 문제 > Level 1' 카테고리의 다른 글
[프로그래머스] x만큼 간격이 있는 n개의 숫자 - 자바스크립트 (0) | 2020.08.27 |
---|---|
[프로그래머스] 행렬의 덧셈 (0) | 2020.08.27 |
[프로그래머스] 핸드폰 번호 가리기 - 자바스크립트 (0) | 2020.08.27 |
[프로그래머스] 하샤드 수 - 자바스크립트 (0) | 2020.08.27 |
[프로그래머스] 평균 구하기 - 자바스크립트 (0) | 2020.08.27 |