https://school.programmers.co.kr/learn/courses/30/lessons/12926
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
1) 풀이
해당 문제는 좀 고민이 많았던 문제였다
난이도가 어려웠던 건 아닌데, 아스키 코드를 적용시켜 대문자, 소문자를 구분하려다보니
비슷한 형태인데 다 따로 코드를 적어주어 뭔가 낭비되는 느낌이 컸다..😂
그래서 다른 분들의 풀이를 봤는데, 어차피 n이 아무리 커도 25까지이기 때문에,
그냥 소문자 대문자를 한 문자열에 집어넣고 반복문으로 탐색해서 확인하는 방법을 많이 쓰셨다..!
나는 생각지도 못했는데 ..역시 똑똑한 사람들이 많다
그래도 난 아스키 코드로 변환하는 방법을 알게 되었으니, 오늘도 하나 배웠다고 생각! (자료는 아래에)
아래는 다른 분들이 가장 많이 시도한 코드이다
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;
}
2) 최종 소스코드
function solution(s, n) {
let answer = '';
for(let i=0;i<s.length;i++){
let tmp=s.charCodeAt(i)+n;
if(s.charCodeAt(i)>=65&&s.charCodeAt(i)<=90){
if(tmp>90){
tmp-=26;
}
answer+=String.fromCharCode(tmp);
}
else if(s.charCodeAt(i)>=97&&s.charCodeAt(i)<=122){
if(tmp>122){
tmp-=26;
}
answer+=String.fromCharCode(tmp);
}else{
answer+=s[i];
}
}
return answer;
}
3) 참고자료
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=diceworld&logNo=220175224345
자바스크립트 아스키코드 변환하기 (charCodeAt / fromCharCode)
- charCodeAt / fromCharCode 란? charCodeAt 은 문자열중 하나를 선택하여 아스키코드 번호로 변환...
blog.naver.com
728x90
'Problem Solving > 프로그래머스' 카테고리의 다른 글
[프로그래머스/JavaScript] 나머지가 1이 되는 수 찾기 (0) | 2022.09.08 |
---|---|
[프로그래머스/JavaScript] 콜라츠 추측 (0) | 2022.09.08 |
[프로그래머스/JavaScript] 나누어 떨어지는 숫자 배열 (0) | 2022.09.07 |
[프로그래머스/JavaScript] 문자열 내림차순으로 배치하기 (0) | 2022.09.06 |
[프로그래머스/c++] 올바른 괄호 (0) | 2021.06.28 |