Study 26.

WorldWannyWeb.·2021년 5월 18일
0

Study

목록 보기
24/35
post-thumbnail

2021-05-17


코드, 면접문제중 아무거나 2문제씩


1. 정수 제곱근 판별

문제 설명
임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다.
n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함수를 완성하세요.

제한 조건
n은 1이상, 50000000000000 이하인 양의 정수입니다.

입출력 예
n return
121 144
3 -1

입출력 예 설명

입출력 예#1
121은 양의 정수 11의 제곱이므로, (11+1)를 제곱한 144를 리턴합니다.

입출력 예#2
3은 양의 정수의 제곱이 아니므로, -1을 리턴합니다.

Answer

code

function solution(n) {
  let answer = Math.sqrt(n);
  if (answer > 0 && Number.isInteger(answer)) {
    return Math.pow(answer + 1, 2);
  } else {
    return -1;
  }
}

description
Math.sqrt() 함수는 숫자의 제곱근을 반환 Math.sqrt(x)
Number.isInteger() 메서드는 주어진 값이 정수인지 판별 Number.isInteger(value)
Math.pow() 거듭제곱을 구할떄 사용 Math.pow(base, exponent) base는 밑 exponent는 지수


2. 시저암호

문제 설명
어떤 문장의 각 알파벳을 일정한 거리만큼 밀어서 다른 알파벳으로 바꾸는 암호화 방식을 시저 암호라고 합니다. 예를 들어 "AB"는 1만큼 밀면 "BC"가 되고, 3만큼 밀면 "DE"가 됩니다. "z"는 1만큼 밀면 "a"가 됩니다. 문자열 s와 거리 n을 입력받아 s를 n만큼 민 암호문을 만드는 함수, solution을 완성해 보세요.

제한 조건
공백은 아무리 밀어도 공백입니다.
s는 알파벳 소문자, 대문자, 공백으로만 이루어져 있습니다.
s의 길이는 8000이하입니다.
n은 1 이상, 25이하인 자연수입니다.

입출력 예
s n result
"AB" 1 "BC"
"z" 1 "a"
"a B z" 4 "e F d"

Answer

code

function solution(s, n) {
  let answer = s
    .split('')
    .map((v) => {
      if (v === ' ') return v;
      return v.toUpperCase().charCodeAt() + n > 90
        ? String.fromCharCode(v.charCodeAt() + n - 26)
        : String.fromCharCode(v.charCodeAt() + n);
    })
    .join('');
  return answer;
}

description
split('')
문자열을 하나씩 끈어서 배열로 반환

map(()=>{})
배열 내의 모든 요소 각각에 대한 결과를 모아 배열로 반환

.toUpperCase()
대문자로 변환

.charCodeAt()
주어진 인덱스에 대한 UTF-16 코드를 나타내는 0부터 65535 사이의 정수를 반환

String.fromCharCode()
UTF-16 코드 유닛으로 문자열을 생성해 반환합니다.
ex) String.fromCharCode(65, 66, 67) === "ABC"

profile
와니완의 월드와이드와니웹🐥

0개의 댓글