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

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

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

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

 

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

 

 

1. 자릿수 더하기 : 자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요.
예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다.

function solution(n)
{
    var answer = 0;

    // [실행] 버튼을 누르면 출력 값을 볼 수 있습니다.
    console.log('Hello Javascript')

    return answer;
}

길라잡이

  • 데이터를 수정해서 답을 구해보세요.
  • 예시
N answer
123 6
987 24

 

답 확인하기
function solution(N) {
    let sum = 0;
    let num = N;

    while (num > 0) {
        sum += num % 10; // 일의 자리 수를 더함
        num = Math.floor(num / 10); // 다음 자릿수로 이동
    }

    return sum;
}

 

해설 확인하기

코드는 주어진 자연수 N의 각 자릿수의 합을 구하여 반환하는 함수입니다. 코드를 한 줄씩 분석해보겠습니다:

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

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

let num = N;: 주어진 자연수 N을 처리하기 위한 변수 num을 초기화합니다.

while (num > 0) { ... }: num이 0보다 큰 동안 반복합니다.

sum += num % 10;: num을 10으로 나눈 나머지(일의 자리 숫자)를 sum에 더합니다.

num = Math.floor(num / 10);: num을 10으로 나눈 몫(다음 자릿수)으로 갱신합니다.

return sum;: 최종적으로 계산된 sum을 반환합니다.

따라서, 이 함수는 입력값 N의 각 자릿수를 더하여 그 합을 반환합니다. 예를 들어, N이 123이라면 각 자릿수인 1, 2, 3을 더한 결과인 6을 반환합니다.

 

2. x만큼 간격이 있는 n개의 숫자 : 함수 solution은 정수 x와 자연수 n을 입력 받아, x부터 시작해 x씩 증가하는 숫자를 n개 지니는 리스트를 리턴해야 합니다. 다음 제한 조건을 보고, 조건을 만족하는 함수, solution을 완성해주세요.

function solution(x, n) {
    var answer = [];
    return answer;
}

길라잡이

  • 데이터를 수정해서 답을 구해보세요.
  • 예시
x n answer
2 5 [2, 4, 6, 8, 10]
4 3 [4, 8, 12]
-4 2 [-4, -8]

 

답 확인하기
function solution(x, n) {
    const answer = new Array(n);

    answer[0] = x;
    for (let i = 1; i < n; i++) {
        answer[i] = answer[i-1] + x;
    }

    return answer;
}

 

해설 확인하기

코드는 주어진 정수 x부터 시작하여 배열의 요소를 생성하는 함수입니다. 배열의 길이는 n이고, 각 요소는 이전 요소에 x를 더한 값으로 설정됩니다. 코드를 한 줄씩 분석해보겠습니다:

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

const answer = new Array(n);: 길이가 n인 배열 answer를 생성합니다.

answer[0] = x;: 배열 answer의 첫 번째 요소에 x를 할당합니다.

for (let i = 1; i < n; i++) { ... }: 인덱스 1부터 n-1까지의 범위에 대해 반복합니다.

answer[i] = answer[i-1] + x;: 현재 인덱스 i의 요소에 이전 인덱스 i-1의 요소 값과 x를 더한 값을 할당합니다.

return answer;: 생성된 배열 answer를 반환합니다.

따라서, 이 함수는 x부터 시작하여 길이가 n인 배열을 생성하여 반환합니다. 각 요소는 이전 요소에 x를 더한 값으로 설정됩니다. 예를 들어, x가 2이고 n이 5인 경우, 생성된 배열은 [2, 4, 6, 8, 10]이 됩니다.

 

3. 문자열 내 p와 y의 개수 : 대문자와 소문자가 섞여있는 문자열 s가 주어집니다. s에 'p'의 개수와 'y'의 개수를 비교해 같으면 True, 다르면 False를 return 하는 solution를 완성하세요. 'p', 'y' 모두 하나도 없는 경우는 항상 True를 리턴합니다. 단, 개수를 비교할 때 대문자와 소문자는 구별하지 않습니다. 예를 들어 s가 "pPoooyY"면 true를 return하고 "Pyy"라면 false를 return합니다.

function solution(s){
    var answer = true;

    // [실행] 버튼을 누르면 출력 값을 볼 수 있습니다.
    console.log('Hello Javascript')

    return answer;
}

길라잡이

  • 데이터를 수정해서 답을 구해보세요.
  • 예시
s answer
"pPoooyY" true
""Pyy
false

 

답 확인하기
function solution(s) {
    let pCount = 0, yCount = 0;
    const array = s.toLowerCase().split("");

    for (let i = 0; i < array.length; i++) {
        if (array[i] === "p") {
            pCount++;
        } else if (array[i] === "y") {
            yCount++;
        }
    }
    
    if (pCount !== yCount) {
        return false;
    }
    
    return true;
}

 

해설 확인하기

코드는 주어진 문자열 s에 포함된 "p"와 "y"의 개수를 비교하여 같은 경우 true를, 다른 경우 false를 반환하는 함수입니다. 코드를 한 줄씩 분석해보겠습니다:

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

let pCount = 0, yCount = 0;: "p"와 "y"의 개수를 세기 위한 변수 pCount와 yCount를 초기화합니다.

const array = s.toLowerCase().split("");: 입력된 문자열 s를 소문자로 변환한 후, 각 문자를 분할하여 배열 array에 저장합니다.

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

if (array[i] === "p") { ... }: 현재 요소가 "p"인 경우, pCount를 증가시킵니다.

else if (array[i] === "y") { ... }: 현재 요소가 "y"인 경우, yCount를 증가시킵니다.

if (pCount !== yCount) { return false; }: "p"와 "y"의 개수가 다른 경우, false를 반환합니다.

return true;: "p"와 "y"의 개수가 같은 경우, true를 반환합니다.

따라서, 이 함수는 주어진 문자열 s에서 "p"와 "y"의 개수를 세어 비교하여 같으면 true를, 다르면 false를 반환합니다. 예를 들어, 문자열이 "pPoooyY"인 경우 "p"와 "y"의 개수가 동일하므로 true를 반환합니다.

 

4. 약수의 합 : 자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴해주세요. 예를들어 n이 12345이면 [5,4,3,2,1]을 리턴합니다.

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

길라잡이

  • 데이터를 수정해서 답을 구해보세요.
  • 예시
n return
12 28
5 6

 

답 확인하기
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;
}

 

해설 확인하기

코드는 주어진 숫자 n을 뒤집어서 배열로 변환하는 함수입니다. 코드를 한 줄씩 분석해보겠습니다:

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

var arr = n.toString().split('');: 입력값 n을 문자열로 변환한 후, split('') 메서드를 사용하여 문자열을 하나씩 분할하여 배열 arr에 저장합니다.

var answer = [];: 결과를 저장할 빈 배열 answer를 초기화합니다.

for(var i=arr.length-1; i>=0; i--){ ... }: arr 배열의 인덱스를 역순으로 반복합니다.

answer.push(Number(arr[i]));: arr의 현재 인덱스 i의 값을 Number() 함수를 사용하여 숫자로 변환한 후, answer 배열에 추가합니다.

return answer;: 뒤집어진 순서로 저장된 answer 배열을 반환합니다.

따라서, 이 함수는 입력값 n을 뒤집어서 배열로 변환하여 반환합니다. 예를 들어, n이 12345인 경우, 뒤집어진 순서로 배열에 저장되어 [5, 4, 3, 2, 1]을 반환합니다.

728x90
반응형