
주어진 n만큼 알파벳 위치에서 밀어서 출력 하기
알파벳의 총 개수는 25개이므로 배열을 만든 뒤 index를 확인하여 출력한다
function solution(s, n) {
const lower = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']
const upper = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']
let temp = s.split('')
let answer = ''
temp.forEach(el => {
if(el === ' ') {
answer.push(el)
}
else if(lower.includes(el)){
let idx = lower.indexOf(el)
else if(idx + n > 25){
answer.push(lower[idx-25+n-1])
} else {
answer.push(lower[lower.indexOf(el)+n])
}
}
if(upper.includes(el)){
let idx = upper.indexOf(el)
if(idx + n > 25){
answer.push(upper[idx-25+n-1])
} else {
answer.push(upper[upper.indexOf(el)+n])
}
}
})
return answer.join('')
}
function solution(s, n) { const upper = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; const lower = "abcdefghijklmnopqrstuvwxyz"; let answer= ''; for(let i =0; i <s.length; i++){ const text = s[i]; if(text == ' ') { answer += ' '; continue; } const textArr = upper.includes(text) ? upper : lower; const index = textArr.indexOf(text)+n; if(index >= textArr.length) index -= textArr.length; answer += textArr[index]; } return answer; }
굳이 배열로 안하고 문자열로 만들어서 문제를 더 간단하게 풀 수 있었다
answer의 변수 안에 공백일 경우 += ' ' 로 공백을 쌓아주고
만들어놓은 알파벳문자열에서 어디에 속하는지 찾은다음 (textArr)
textArr에서 text의 위치를 찾아내어 n만큼 더하여서 index를 찾아낸다
만약 길이보다 크다면(25) index에서 길이만큼 제해준다.
그러고 나서 answer에 값을 쌓아준다.
위와 같은 방향으로 문제를 푼 건 맞지만 코드는 그보다 복잡하고 가독성도 안좋게 작성했다..
어떻게 하면 조금 더 가독성 있게 쓸 수 있는지 고민을 해보아야겠다
다른분들의 문제 풀이를 보는경우도 공부가 많이 되는것 같다