프로그래머스 1단계 - 시저 암호 본문
반응형
1 단계 : 시저 암호
코딩테스트 연습 > 연습문제 > 시저 암호
문제 설명
어떤 문장의 각 알파벳을 일정한 거리만큼 밀어서 다른 알파벳으로 바꾸는 암호화 방식을 시저 암호라고 합니다. 예를 들어 "AB"는 1만큼 밀면 "BC"가 되고, 3만큼 밀면 "DE"가 됩니다. "z"는 1만큼 밀면 "a"가 됩니다. 문자열 s와 거리 n을 입력받아 s를 n만큼 민 암호문을 만드는 함수, solution을 완성해 보세요.
제한 조건
공백은 아무리 밀어도 공백입니다. s는 알파벳 소문자, 대문자, 공백으로만 이루어져 있습니다. s의 길이는 8000이하입니다. n은 1 이상, 25이하인 자연수입니다.
입출력 예
s | n | result |
---|---|---|
"AB" | 1 | "BC" |
"z" | 1 | "a" |
"a B z" | 4 | "e F d" |
반응형
코드
function solution(s, n) {
let answer = '';
const big = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'.split(''); // 대문자 배열 각각 알파벳 하나 원소 가짐
const small = 'abcdefghijklmnopqrstuvwxyz'.split('');
for(let i = 0; i < s.length; i++){
if(s[i] === ' '){ // 공백이면 공백
answer += ' ';
}
else if(s[i] === s[i].toUpperCase()){ // 대문자면 n만큼 밀고 big안에서 반복될 수 있도록
answer += big[(big.indexOf(s[i]) + n) % big.length];
}
else if(s[i] === s[i].toLowerCase()){ // 마찬가지
answer += small[(small.indexOf(s[i]) + n) % small.length];
}
}
return answer;
}
리뷰
순서는 다음과 같다
1. 알파벳 하나하나를 쪼갠 배열 big(대문자) small(소문자) 배열을 선언합니다.
2. 문자열 s를 돌면서 공백이면 공백처리, 대문자거나 소문자면 각각의 big, small 배열에서 n 만큼 밉니다.
3. 여기서 z,Z를 넘어갔을 경우를 대비해서 big.length를 나눈 나머지값을 인덱스로 처리합니다.
4. 그렇게되면 배열안에서 반복되겠죠?
총평 : 이 문제는 뭔가 어려웠습니다.. 아스키 코드 값으로 풀고 싶었는데 잘 안됐습니다. 파이썬은 ord랑 chr로 쉽게 풀었던 것 같은데 말이죠..
반응형
'알고리즘 > 1단계' 카테고리의 다른 글
프로그래머스 1단계 - 문자열 내 마음대로 정렬하기 (0) | 2022.10.12 |
---|---|
프로그래머스 1단계 - 소수 찾기 (0) | 2022.10.11 |
프로그래머스 1단계 - 문자열 내 p와 y의 개수 (4) | 2022.10.05 |
프로그래머스 1단계 - 정수 내림차순으로 배치하기 (4) | 2022.10.04 |
프로그래머스 1단계 - 하샤드 수 (3) | 2022.09.30 |
Comments