Decrypt indexOf를 활용한 문자 변환 Javascript

cptkuk91·2022년 8월 10일
1

Algorithm

목록 보기
53/161
post-custom-banner

문제

암호화된 문자열과 암호화 키를 입력받아 복호화된 문자열을 리턴해야 합니다.
카이사르 암호(Caesar cipher)는 평문(plaintext)을 암호키 secret개만큼 (오른쪽으로) 평행이동시켜 암호화 합니다. 복호화는 암호화된 문자열을 원래의 평문으로 복원하는 것을 말합니다.

주의사항

빈 문자열을 입력받은 경우, 빈 문자열을 리턴해야 합니다.
공백은 그대로 두어야 합니다.

입출력 예시

let output = decryptCaesarCipher('khoor', 3);
console.log(output); // --> hello
output = decryptCaesarCipher('zruog', 3);
console.log(output); // --> world

풀이

function solution(str, secret){
	let result = "";
    
    // str에 들어갈 모든 알파멧은 alpha에 넣어줍니다.
    let alpha = "abcdefghijklmnopqrstuvwxyz";
    
    for(let i = 0; i < str.length; i++){
    	// 주의사항 공백은 그대로 두어야 합니다.
    	if(str[i] === " "){
        	result += " ";
        } else {
        	// indexOf를 통해 current에다가 str[i] 문자를 숫자로 변환해줍니다.
        	let current = alpha.indexOf(str[i]);
            let after = (current - secret + alpha.length) % alpha.length;
            // 결과값을 반환할 문자열 result에다가 alpha[after]를 넣어 문자를 연결해줍니다.
            result += alpha[after];
        }
    }
    return result;
}

indexOf를 자유롭게 사용할 수 있어야 해결가능한 문제입니다. 추가적으로 alpha[after]를 통해서 문자를 뽑아내 result에 연결해줘 문제가 요구하는 문자열을 출력할 수 있습니다.

profile
메일은 매일 확인하고 있습니다. 궁금하신 부분이나 틀린 부분에 대한 지적사항이 있으시다면 언제든 편하게 연락 부탁드려요 :)
post-custom-banner

0개의 댓글