본문 바로가기
프로그래머스 코딩 테스트

프로그래머스 : JavaScript 알고리즘 Level.1 3일

by dongjin6539 2023. 7. 7.
728x90
반응형

프로그래머스 : JavaScript 알고리즘 Level.1 3일

 

프로그래머스 : JavaScript 알고리즘 Level.3

 

 

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

function solution(n) {
    var answer = 0;
    return answer;
}

길라잡이

  • 데이터를 수정해서 답을 구해보세요.
  • 예시
n return
121 144
3 -1

 

답 확인하기
function solution(n) {
    var answer = 0;
    let sqrt = Math.sqrt(n);
    if (sqrt % 1 !== 0) { // 나머지를 이용해 소숫점 판별, 제곱근이 아닐 경우
        answer = -1;
    } else {
        answer = Math.pow(sqrt+1,2); // 제곱근일 경우
    }
    return answer
}

 

해설 확인하기

코드는 주어진 숫자 n이 제곱수인지 확인하고, 제곱수인 경우 다음 제곱수를 반환하는 함수입니다. 코드를 한 줄씩 분석해보겠습니다:

function solution(n) { ... }: solution이라는 이름의 함수를 선언하고, 입력값 n을 받습니다.

var answer = 0;: 결과를 저장할 변수 answer를 초기화합니다.

let sqrt = Math.sqrt(n);: n의 제곱근을 계산하여 변수 sqrt에 저장합니다.

if (sqrt % 1 !== 0) { ... }: sqrt의 소수 부분이 0이 아닌 경우, 즉 sqrt가 정수가 아닌 경우를 확인합니다.

answer = -1;: sqrt가 정수가 아닌 경우, answer에 -1을 할당합니다.

else { ... }: 앞의 조건이 거짓인 경우, 즉 sqrt가 정수인 경우를 처리합니다.

answer = Math.pow(sqrt+1,2);: sqrt에 1을 더한 값의 제곱을 계산하여 answer에 할당합니다.

return answer;: 계산된 answer 값을 반환합니다.

따라서, 이 함수는 입력값 n이 제곱수인지 확인하고, 제곱수인 경우 다음 제곱수를 반환합니다. 제곱수가 아닌 경우 -1을 반환합니다. 예를 들어, n이 9인 경우, sqrt는 3이므로 다음 제곱수인 16을 반환합니다.

 

2. 문자열을 정수로 바꾸기 : 문자열 s를 숫자로 변환한 결과를 반환하는 함수, solution을 완성하세요.

function solution(s) {
    var answer = 0;
    return answer;
}

길라잡이

  • 데이터를 수정해서 답을 구해보세요.
  • 예를들어 str이 "1234"이면 1234를 반환하고, "-1234"이면 -1234를 반환하면 됩니다.
    str은 부호(+,-)와 숫자로만 구성되어 있고, 잘못된 값이 입력되는 경우는 없습니다.

 

답 확인하기
function solution(s) {
    return Number(s);
}

 

해설 확인하기

코드는 주어진 문자열 s를 숫자로 변환하여 반환하는 함수입니다. 코드를 한 줄씩 분석해보겠습니다:

function solution(s) { ... }: solution이라는 이름의 함수를 선언하고, 입력값 s를 받습니다.

return Number(s);: 입력값 s를 Number() 함수를 사용하여 숫자로 변환하여 반환합니다.

따라서, 이 함수는 주어진 문자열 s를 숫자로 변환하여 반환합니다. 예를 들어, 문자열 "123"인 경우 숫자 123을 반환합니다.

 

3. 정수 내림차순으로 배치하기 : 함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n이 118372면 873211을 리턴하면 됩니다.

function solution(n) {
    var answer = 0;
    return answer;
}

길라잡이

  • 데이터를 수정해서 답을 구해보세요.
  • 예시
n return
118372 873211

 

답 확인하기
function solution(n) {
    var answer = 0;
    
    n=String(n)
    n=n.split('')
    n=n.sort((a,b)=>b-a).join('')
    n=Number(n)
    
    return n;
}

 

해설 확인하기

코드는 주어진 숫자 n의 각 자릿수를 내림차순으로 정렬하여 큰 수를 만들고, 그 결과를 숫자로 반환하는 함수입니다. 코드를 한 줄씩 분석해보겠습니다:

function solution(n) { ... }: solution이라는 이름의 함수를 선언하고, 입력값 n을 받습니다.

var answer = 0;: 결과를 저장할 변수 answer를 초기화합니다. (이 코드에서는 사용되지 않음)

n = String(n): 입력값 n을 문자열로 변환합니다.

n = n.split(''): 문자열 n을 각 자리마다 분할하여 배열로 변환합니다.

n = n.sort((a, b) => b - a).join(''): 배열 n을 내림차순으로 정렬한 후, 다시 문자열로 합칩니다.

n = Number(n): 문자열 n을 숫자로 변환합니다.

return n;: 변환된 숫자 n을 반환합니다.

따라서, 이 함수는 입력값 n의 각 자릿수를 내림차순으로 정렬하여 큰 수를 만들고, 그 결과를 숫자로 반환합니다. 예를 들어, n이 54321인 경우, 5, 4, 3, 2, 1을 내림차순으로 정렬하여 숫자 54321을 반환합니다.

 

4. 하샤드 수 : 양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하샤드 수인지 아닌지 검사하는 함수, solution을 완성해주세요.

function solution(x) {
    var answer = true;
    return answer;
}

길라잡이

  • 데이터를 수정해서 답을 구해보세요.
  • 예시
x return
10 true
12 true
11 false
13 false

 

답 확인하기
function solution(n) {
    var arr = n.toString().split('');
  // n을 string으로 형변환하고 split으로 하나씩 끊어줌.
    var answer = [];

    for(var i=arr.length-1; i>=0; i--){
        answer.push(Number(arr[i]));
    }
  //arr의 인덱스 역순으로 answer의 배열 안에 넣어준다.
  return answer;
}

 

해설 확인하기

코드는 주어진 숫자 x의 각 자릿수를 합한 값으로 x가 나누어지는지 확인하는 함수입니다. 코드를 한 줄씩 분석해보겠습니다:

function solution(x) { ... }: solution이라는 이름의 함수를 선언하고, 입력값 x를 받습니다.

var sum = 0;: 각 자릿수의 합을 저장할 변수 sum을 초기화합니다.

var arr = String(x).split("");: 입력값 x를 문자열로 변환한 후, 각 자리마다 분할하여 배열 arr로 변환합니다.

for (let i = 0; i < arr.length; i++) { ... }: 배열 arr의 각 요소에 대해 반복합니다.

sum += Number(arr[i]);: 각 요소를 숫자로 변환하여 sum에 더합니다.

return (x % sum == 0) ? true : false;: x를 sum으로 나눈 나머지가 0인지 확인하여 true 또는 false를 반환합니다.

따라서, 이 함수는 입력값 x의 각 자릿수를 합한 값으로 x가 나누어지는지 확인하여 그 결과를 반환합니다. 예를 들어, x가 18인 경우, 각 자릿수의 합은 1+8=9이며, 18은 9로 나누어지므로 true를 반환합니다.

728x90
반응형