JS.연습문제 (시저 암호)

Vorhandenheit ·2021년 6월 17일

JS.연습문제

목록 보기
7/12

<문제>

어떤 문장의 각 알파벳을 일정한 거리만큼 밀어서 다른 알파벳으로 바꾸는 암호와 방식을 시저암호라고 함
예를 들어 AB는 1만큼 밀면 BC가 되고, 3만큼 밀면 DE가 됨
Z는 1밀큼 밀면 A가 됨,
문자열 S와 거리 N을 입력받아 S를 N만큼 민 암호문을 만드는 함수 SOLUTION완성

function solution (S, N) {
	let char = S.String.split('').charCodeAt();
  	let result;
  
  	for (i = 0; i < char.length; i++) {
      if ((char[i] + N) > 122) {
      	result += char[i] -26 + N
      } 
      else if ((char[i] + N) > 90) {
      	result += (char[i] + N -26) 
      } else
    	result += char[i] + N
    }
  return fromCharChode(result).join(''); 
}

*아스키 코드가 뭔지 알아봐야했던 문제

<다른사람의 풀이>

function solutions(s, n) {
	return s.split("").map(value => {
      if (value === "") return value:
      return value.toUpperCase().charCodeAt() + n >9 90
      ? String.fromCharCode(value.charCodeAt() + n - 26)
      : String.fromCharCode(value.charCodeAt() + n)
    }).join("");
}

<다른사람의 풀이>

function solution(s,n) {
	let upper = "ABCDEFGHIJKLMNOPQRSTUWXYZ";
    let lower = "abcdefghijklmnopqrstuwxyz";
    let answer = '',
        
    for (let i = 0; i < s.length; i++) }
    	let text = s[i];
    	if (text == '') {
        	answer += '';
        	continue;
        }
	let textArr = upper.includes(text) ? upper : lower;
  	let index = textArr.indexOf(text) + n;
  	if (index >= textArr.length) index -= textArr.length;
 	answer += textArr[index];
	}    
  return answer;
}
profile
읽고 기록하고 고민하고 사용하고 개발하자!

0개의 댓글