728x90
문제
코드
function solution(s, n) {
var answer = '';
let num = 0;
for(let i = 0; i < s.length; i++)
{
num = s.charCodeAt(i);
if(num >= 65 && num <= 90){
num = num + n;
if(num > 90)
{
num -= 26;
}
}
else if (num >= 97 && num <= 122) {
num =num + n;
if (num > 122)
{
num -= 26;
}
}
answer+= String.fromCharCode(num);
}
return answer;
}
풀이
우선 기본적으로 아스키 코드에 대한 개념이 있어야하는 문제이다.
아스키코드란?
위의 이미지 표 처럼 문자들을 10진수로 표현한 것을 아스키 코드라고 한다. 이제 받은 문자열을 각각 아스키코드로 바꾸고 얼마나 더해줘야하는지하는 +n을 구해서 다시 문자로 바꿔주면 된다!
charCodeAt 와 fromCharCode
s에 문자열이 "AB"라면, num = s.charCodeAt(0)을 하게 된다면 A에 해당하는 아스키 코드 수인 97이 num에 들어가게 된다. 이제 반대로 숫자를 문자로 바꾸고 싶다면 str = String.fromCharCode(97)을 하게 된다면 A가 str에 들어가게 들어가게 된다. 이것을 이용하여 코드를 짰다. if(num >= 65 && num <= 90) 을 하게 되면 문자가 대문자일 경우에만 해당하는 아스키 코드를 가지고 온다. 여기에 우리가 아스키코드를 받은 num에 +n 을 하게 해주면 해당하는 문자 아스키코드를 받아오는데 이것이 Z를 넘으면 다시 A부터 시작하게 해야하기 때문에 num-26 을 하여서 해당하는 문자에 대문자를 얻어오도록 하였다. 소문자도 마찬가지로 범위를 구하여서 구하고, 마지막에 fromCharCode한 수를 answer에 넣는 식으로 하여 문제를 해결하였다.
'코딩 > 코딩테스트' 카테고리의 다른 글
[프로그래머스/JS] 두 개 뽑아서 더하기 (0) | 2024.06.05 |
---|---|
[프로그래머스/JS] 문자열 내 마음대로 정렬하기 (0) | 2024.06.03 |
[프로그래머스/JS] 최소직사각형 (0) | 2024.05.29 |
[프로그래머스/JS] 이상한 문자 만들기 (0) | 2024.05.27 |
[프로그래머스/JS] 3진법 뒤집기 (0) | 2024.05.24 |