[Programmers]起動パスワード
7616 ワード
私の答え
function solution(s, n) {
let aCode = 'a'.charCodeAt()
let zCode = 'z'.charCodeAt()
let ACode = 'A'.charCodeAt()
let ZCode = 'Z'.charCodeAt()
console.log(aCode, zCode, ACode, ZCode) //97 122 65 90
let answer = '';
let sArr = s.split('') // 문자열 s 를 배열로 변환
sArr.forEach(el => { // 배열을 순회하면서 각 값들을 n씩 밀어내기
let elCode = el.charCodeAt() // 요소의 유니코드
let elPlusN = elCode + n // 요소의 유니코드에 n을 더한 값 = n만큼 밀어낸 값
// 소문자 범주에 있는 유니코드인 경우
if (aCode <= elCode && elCode <= zCode) {
// n을 더한 유니코드가 소문자 범주에서 벗어난다면
if (elPlusN > zCode) {
answer += String.fromCharCode(elPlusN - zCode + aCode - 1)
// n을 더한 유니코드가 소문자 범주라면
} else {
answer += String.fromCharCode(elPlusN)
}
// 대문자 범주에 있는 유니코드인 경우
} else if (ACode <= elCode && elCode <= ZCode) {
// n을 더한 유니코드가 대문자 범주에서 벗어난다면
if (elPlusN > 90) {
answer += String.fromCharCode(elPlusN - ZCode + ACode - 1)
// n을 더한 유니코드가 대문자 범주라면
} else {
answer += String.fromCharCode(elPlusN)
}
// 요소의 유니코드가 소문자/대문자 범주 밖인 경우
} else {
answer += ' '
}
})
return answer;
}
問題の説明
1つの文のアルファベットを一定の距離に押します.
使用
これはシーザーのパスワードです.
例えば,ABは1プッシュでBCとなる.
3を押すとDEになります
zは1に等しく、aである.
文字列sと
入力距離n
sをnに設定する関数を完了してください.
せいげんじょうけん
いくら押してもスペースは空いています.
sは、小文字、大文字、スペースのみから構成されます.
sの長さは8000以下です.
nは1以上,25以下の自然数である.
I/O例
s n result
AB 1 BC
z 1 a
a B z 4 e F d
Reference
この問題について([Programmers]起動パスワード), 我々は、より多くの情報をここで見つけました https://velog.io/@rhdgoehe2/Programmers-시저암호テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol