https://school.programmers.co.kr/learn/courses/30/lessons/12926
1. 문제에 대한 이해
- 우리가 풀어야 할 문제는 무엇인가?
- 문자열 s와 거리 n을 입력받아 s를 n만큼 민 암호문을 만들어라 - 주어진 자료는 무엇인가?
- 문자열 s와 거리 n - 조건은 무엇인가?
- 공백은 아무리 밀어도 공백입니다.
- s는 알파벳 소문자, 대문자, 공백으로만 이루어져 있습니다.
- s의 길이는 8000이하입니다.
- n은 1 이상, 25이하인 자연수입니다.
2. 계획
- 주어진 문자열의 유니코드를 알아낸다.
- n 만큼 이동 시킨다.
- 주어진 문자열이 z 혹은 Z 일 경우 문자열의 유니코드에서 26을 빼고 n 만큼 이동한다.
- 이동 후 다시 문자열로 변환하고 리턴한다.
3. 실행
- 풀이 계획을 실행하고, 각 단계가 올바른지 점검하라.
function solution(s, n) {
const code = s.split('').map((it) => it.charCodeAt(0));
const str = code.map((it) => {
if (it + n > 122 || it + n > 90 && it < 97) {
return String.fromCharCode(it - 26 + n)
} else if (it === 32) {
return ' '
}
else {
return String.fromCharCode(it + n)
}
});
return str.join('');
}
test('시저암호', () => {
expect(solution("AB", 1)).toEqual("BC");
expect(solution("z", 1)).toEqual("a");
expect(solution("a B z", 4)).toEqual("e F d");
expect(solution("P", 15)).toEqual("E");
});
4. 반성
- 문자열 유니코드 사용에 익숙하지 않아서 처음에 어떻게 문제를 풀어야할지 고민하느라 오랜 시간이 소요되어서 아쉬웠다.
'코테연습' 카테고리의 다른 글
129. 이상한 문자 만들기 Javascript (0) | 2022.09.12 |
---|---|
128. 약수의합 Javascript (0) | 2022.09.12 |
126. 수박수박수박수박수박수? Javascript (0) | 2022.09.12 |
125. 소수 찾기 Javascript (0) | 2022.09.12 |
124. 서울에서 김서방 찾기 Javascript (0) | 2022.09.12 |
댓글