차차로그
[JS] 연습문제 > 시저 암호 본문
문제 보고 아스키코드 이용하면 되겠거니 싶었다.
근데 아스키코드 변환하는 법을 몰라서 이번 기회에 공부하게 됐다
function solution(s, n) {
var answer = "";
var arr = s.split("").map((v,i)=> s.charCodeAt(i));
for(var i = 0; i < arr.length; i++){
if(arr[i] >= 65 && arr[i] <= 90){
arr[i] = arr[i] + n;
if(arr[i] > 90){
arr[i] = arr[i] - 26;
}
}else if(arr[i] >= 97 && arr[i] <= 122){
arr[i] = arr[i] + n;
if(arr[i] > 122){
arr[i] = arr[i] - 26;
}
}
arr[i] = String.fromCharCode(arr[i]);
answer += arr[i];
}
return answer;
}
먼저 split으로 문자열을 배열로 만들어 주고 각 인덱스의 값을 charCodeAt으로 아스키코드로 변환시켜줬다.
그 후에 반복문을 돌려서 인덱스 값에 n만큼 더해줬는데
대문자(A-Z.아스키코드 65~90)와 소문자(a-z.아스키코드 97~122) 분기를 나눠 n을 더하고 -> 범위를 지정해줘서 공백처리는 따로 안 해줘도 된다.
n을 더한 값이 90(Z) 또는 122(z)를 넘게 되면 다시 A/a로 돌아와야하기 때문에 각각 26을 빼줬다.
아스키코드에서 일반 문자로 변환은 String.fromCharCode로 해주었고 answer 변수에 값을 담아줬다.
다른 사람 풀이
광기가 느껴지는.....제 2의 수박
아스키코드 없이도 문제 풀이가 가능하다! 참고
'코딩테스트' 카테고리의 다른 글
[JS] 연습문제 > x만큼 간격이 있는 n개의 숫자 (0) | 2022.08.23 |
---|---|
[JS] 연습문제 > 문자열 내림차순으로 배치하기 (0) | 2022.08.23 |
[JS] 연습문제 > 짝수와 홀수 (0) | 2022.08.23 |
[JS] 연습문제 > 제일 작은 수 제거하기 (0) | 2022.08.23 |
[JS] 연습문제 > 핸드폰 번호 가리기 (2) | 2022.08.23 |
Comments