반응형
프로그래머스 시저함수 문제 풀이, 해설 알고리즘 코딩테스트
프로그래머스 시저함수 문제 소개와 필자의 문제풀이 및 인기 있는 문제풀이 소개와 해설을 소개하겠습니다. 아래 풀이 과정을 보면서 많은 인사이트를 얻어가시길 바랍니다.
프로그래머스 시저함수 문제
시저 암호란?
시저 암호는 각 알파벳을 일정 거리만큼 밀어서 다른 알파벳으로 변환하는 암호화 방식입니다. 예를 들어, "AB"를 1만큼 밀면 "BC"가 되고, "z"는 1만큼 밀면 "a"로 변환됩니다. 공백은 변하지 않습니다.
필자의 문제풀이 해설
function solution(s, n) {
let answer = "";
const arrStr = [...s];
const arr = [...new Array(26).fill().map((_, i) => String.fromCharCode(i + 97)).join("")];
const upperArr = arr.map((x) => x.toUpperCase());
const pattern2 = /[a-zA-Z]/; // 영어 패턴
arrStr.forEach((x) => {
// 영어 체크
if (!pattern2.test(x)) {
answer += x;
return;
}
let arrIdx = Number(arr.indexOf(x)) + n;
let arrUpIdx = Number(upperArr.indexOf(x)) + n;
if (x === x.toUpperCase())
answer += upperArr[arrUpIdx > 25 ? arrUpIdx - 26 : arrUpIdx];
else answer += arr[arrIdx > 25 ? arrIdx - 26 : arrIdx];
});
return answer;
}
- 문자열을 배열로 변환하여 알파벳 체크를 쉽게 수행.
- 알파벳이 아닌 경우 그대로 두고, 알파벳일 경우 인덱스를 이용해 밀어내기.
- 대소문자에 따라 다른 배열 활용.
인기있는 문제풀이 해설
function solution(s, n) {
var upper = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
var lower = "abcdefghijklmnopqrstuvwxyz";
var answer= '';
for(var i =0; i <s.length; i++){
var text = s[i];
if(text == ' ') {
answer += ' ';
continue;
}
var textArr = upper.includes(text) ? upper : lower;
var index = textArr.indexOf(text) + n;
if(index >= textArr.length) index -= textArr.length;
answer += textArr[index];
}
return answer;
}
- 대문자, 소문자에 따라 다른 배열 선택.
- 밀어내는 인덱스 처리를 간결하게 구현.
알고리즘의 다양한 해결과정
알고리즘의 세계에서 시저 암호는 다양한 해결 방식을 통해 풀어집니다. 필자의 해설에서는 배열과 인덱스를 활용하여 각 알파벳을 처리하였고, 인기있는 해설에서는 대소문자를 구분하여 처리함으로써 간결하게 문제를 해결했습니다. 이처럼 다양한 접근 방식을 통해 알고리즘의 아름다움을 탐험하고, 자신만의 해결 방식을 찾아가는 여정이 더욱 흥미로울 것입니다. 🚀✨
▼아래 글도 읽어보세요! ▼
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
프로그래머스 과일 장수 문제풀이 과정, 알고리즘 최적화 (1) | 2024.01.08 |
---|---|
프로그래머스 문자열 다루기 기본 해설, 인기 있는 문제풀이 (1) | 2023.12.29 |
프로그래머스 최소직사각형 해설, 문제풀이 과정, 알고리즘 최적화 (1) | 2023.11.30 |
프로그래머스 부족한 금액 계산하기 해설, 문제풀이 과정 (0) | 2023.11.22 |
프로그래머스 내적 해설, 문제풀이 과정, 인기 있는 문제풀이 (1) | 2023.11.16 |