🌠 문제

개미 군단이 사냥을 나가려고 합니다. 개미군단은 사냥감의 체력에 딱 맞는 병력을 데리고 나가려고 합니다. 장군개미는 5의 공격력을, 병정개미는 3의 공격력을 일개미는 1의 공격력을 가지고 있습니다. 예를 들어 체력 23의 여치를 사냥하려고 할 때, 일개미 23마리를 데리고 가도 되지만, 장군개미 네 마리와 병정개미 한 마리를 데리고 간다면 더 적은 병력으로 사냥할 수 있습니다. 사냥감의 체력 hp가 매개변수로 주어질 때, 사냥감의 체력에 딱 맞게 최소한의 병력을 구성하려면 몇 마리의 개미가 필요한지를 return하도록 solution 함수를 완성해주세요.

🌠 제한사항

  • hp는 자연수입니다.
  • 0 ≤ hp ≤ 1000

🌠 입출력 예

hp result
23 5
24 6
999 201

🌠 입출력 예 설명

입출력 예 #1

  • hp가 23이므로, 장군개미 네마리와 병정개미 한마리로 사냥할 수 있습니다. 따라서 5를 return합니다.

입출력 예 #2

  • hp가 24이므로, 장군개미 네마리 병정개미 한마리 일개미 한마리로 사냥할 수 있습니다. 따라서 6을 return합니다.

입출력 예 #3

  • hp가 999이므로, 장군개미 199 마리 병정개미 한마리 일개미 한마리로 사냥할 수 있습니다. 따라서 201을 return합니다.

🧞 풀이

function solution(hp) {
    const a = parseInt(hp/5);
    let remain_a = hp % 5;
    const b = parseInt(remain_a/3);
    let remain_b = remain_a % 3;
    return a + b + remain_b;
}

🌠 문제

순서쌍이란 두 개의 숫자를 순서를 정하여 짝지어 나타낸 쌍으로 (a, b)로 표기합니다. 자연수 n이 매개변수로 주어질 때 두 숫자의 곱이 n인 자연수 순서쌍의 개수를 return하도록 solution 함수를 완성해주세요.

🌠 제한사항

  • 1 ≤ n ≤ 1,000,000

🌠 입출력 예

n result
20 6
100 9

🌠 입출력 예 설명

입출력 예 #1

  • n이 20 이므로 곱이 20인 순서쌍은 (1, 20), (2, 10), (4, 5), (5, 4), (10, 2), (20, 1) 이므로 6을 return합니다.

입출력 예 #2

  • n이 100 이므로 곱이 100인 순서쌍은 (1, 100), (2, 50), (4, 25), (5, 20), (10, 10), (20, 5), (25, 4), (50, 2), (100, 1) 이므로 9를 return합니다.

🧞 풀이

function solution(n) {
    // 정답 담기 위한 변수 선언
    let answer = 0;
    
    // x는 n의 제곱근의 정수 부분
    const x = parseInt(Math.sqrt(n));
    
    // 1부터 x까지 반복하면서 약수인지 확인
    // 약수일 경우, 항상 쌍이 있기 때문에 answer에 더하기 2
    for (let i = 1; i <= x; i++) {
        if (n % i == 0) {
            answer += 2;
        }
    }
    
    // 만약 Math.sqrt(n)이 정수면, 해당 경우는 Math.sqrt(n)을 약수로 가지는 것
    // 그렇기 때문에 -1
    if ( x == Math.sqrt(n) ) {
        answer -= 1;
    }
    
    // 정답 반환
    return answer;
}

🌠 문제

외과의사 머쓱이는 응급실에 온 환자의 응급도를 기준으로 진료 순서를 정하려고 합니다. 정수 배열 emergency가 매개변수로 주어질 때 응급도가 높은 순서대로 진료 순서를 정한 배열을 return하도록 solution 함수를 완성해주세요.

🌠 제한사항

  • 중복된 원소는 없습니다.
  • 1 ≤ emergency의 길이 ≤ 10
  • 1 ≤ emergency의 원소 ≤ 100

🌠 입출력 예

emergency result
[3, 76, 24] [3, 1, 2]
[1, 2, 3, 4, 5, 6, 7] [7, 6, 5, 4, 3, 2, 1]
[30, 10, 23, 6, 100] [2, 4, 3, 5, 1]

🌠 입출력 예 설명

입출력 예 #1

  • emergency가 [3, 76, 24]이므로 응급도의 크기 순서대로 번호를 매긴 [3, 1, 2]를 return합니다.

입출력 예 #2

  • emergency가 [1, 2, 3, 4, 5, 6, 7]이므로 응급도의 크기 순서대로 번호를 매긴 [7, 6, 5, 4, 3, 2, 1]를 return합니다.

입출력 예 #3

  • emergency가 [30, 10, 23, 6, 100]이므로 응급도의 크기 순서대로 번호를 매긴 [2, 4, 3, 5, 1]를 return합니다.

🧞 풀이

function solution(emergency) {
    let answer = new Array(emergency.length);
    let sorted = emergency.slice().sort((a, b) => a - b);
    
    var i = sorted.length - 1;
    var e = 1;
    while (i >= 0) {
        answer[emergency.indexOf(sorted[i])] = e;
        i--;
        e++;
    }
    
    return answer;
}

🌠 문제

우주여행을 하던 머쓱이는 엔진 고장으로 PROGRAMMERS-962 행성에 불시착하게 됐습니다. 입국심사에서 나이를 말해야 하는데, PROGRAMMERS-962 행성에서는 나이를 알파벳으로 말하고 있습니다. a는 0, b는 1, c는 2, ..., j는 9입니다. 예를 들어 23살은 cd, 51살은 fb로 표현합니다. 나이 age가 매개변수로 주어질 때 PROGRAMMER-962식 나이를 return하도록 solution 함수를 완성해주세요.

🌠 제한사항

  • age는 자연수입니다.
  • age ≤ 1,000
  • PROGRAMMERS-962 행성은 알파벳 소문자만 사용합니다.

🌠 입출력 예

age result
23 "cd"
51 "fb"
100 "baa"

🌠 입출력 예 설명

입출력 예 #1

  • age가 23이므로 "cd"를 return합니다.

입출력 예 #2

  • age가 51이므로 "fb"를 return합니다.

입출력 예 #3

  • age가 100이므로 "baa"를 return합니다.

🧞 풀이

function solution(age) {
    // 배열을 선언하고 해당 인덱스 값으로 962식 나이 return
    let letter_array = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'];
    // age 값 문자열로 변환하여 각 자리수 나눠서 배열 원소로 할당
    let age_array = age.toString().split("");
    // map 함수 써서 요소 일괄 인덱스 배열 값으로 변경
    let answer = age_array.map(e => letter_array[e]);
    // 정답 문자열 형태로 출력
    return answer.join("");
}

🌠 문제

정수 배열 numbers와 정수 num1, num2가 매개변수로 주어질 때, numbers의 num1번 째 인덱스부터 num2번째 인덱스까지 자른 정수 배열을 return 하도록 solution 함수를 완성해보세요.

🌠 제한사항

  • 2 ≤ numbers의 길이 ≤ 30
  • 0 ≤ numbers의 원소 ≤ 1,000
  • 0 ≤num1 < num2 < numbers의 길이

🌠 입출력 예

numbers                num1 num2 result
[1, 2, 3, 4, 5]             1       3      [2, 3, 4]
[1, 3, 5]                     1       2      [3, 5]

🌠 입출력 예 설명

입출력 예 #1

  • [1, 2, 3, 4, 5]의 1번째 인덱스 2부터 3번째 인덱스 4 까지 자른 [2, 3, 4]를 return 합니다.

입출력 예 #2

  • [1, 3, 5]의 1번째 인덱스 3부터 2번째 인덱스 5까지 자른 [3, 5]를 return 합니다.

🧞 풀이

function solution(numbers, num1, num2) {
    // slice 함수: 배열의 일부를 잘라 새로운 배열로 리턴
    // 인자는 시작 인덱스와 끝 인덱스를 받음
    return numbers.slice(num1, num2+1);
}

🌠 문제

정수 n이 주어질 때, n이하의 짝수를 모두 더한 값을 return 하도록 solution 함수를 작성해주세요.

🌠 제한사항

  • 0 < n ≤ 1000

🌠 입출력 예

10 30
4 6

🌠 입출력 예 설명

입출력 예 #1

  • n이 10이므로 2 + 4 + 6 + 8 + 10 = 30을 return 합니다.

입출력 예 #2

  • n이 4이므로 2 + 4 = 6을 return 합니다.

🧞 풀이

function solution(n) {
    // 합을 담을 answer 선언
    let answer = 0;
    // 반복문 돌려가며 짝수일 때만 answer에 추가
    for (let i = 0; i <= n; i ++) {
        if (i % 2 == 0) {
            answer += i;
        }
    }
    // answer 값 리턴
    return answer;
}

🌠 문제

머쓱이네 양꼬치 가게는 10인분을 먹으면 음료수 하나를 서비스로 줍니다. 양꼬치는 1인분에 12,000원, 음료수는 2,000원입니다. 정수 n과 k가 매개변수로 주어졌을 때, 양꼬치 n인분과 음료수 k개를 먹었다면 총얼마를 지불해야 하는지 return 하도록 solution 함수를 완성해보세요.

🌠 제한사항

  • 0 < n < 1,000
  • n / 10 ≤ k < 1,000
  • 서비스로 받은 음료수는 모두 마십니다.

🌠 입출력 예

n   k result
10 3 124,000
64 6 768,000

🌠 입출력 예 설명

입출력 예 #1

  • 10인분을 시켜 서비스로 음료수를 하나 받아 총 10 * 12000 + 3 * 2000 - 1 * 2000 = 124,000원입니다.

입출력 예 #2

  • 64인분을 시켜 서비스로 음료수를 6개 받아 총 64 * 12000 + 6 * 2000 - 6 * 2000 =768,000원입니다.

🧞 풀이

function solution(n, k) {
    // k는 서비스로 받은 음료수를 뺀 새로운 k로 할당
    // n을 10으로 나눈 몫만큼 k에서 뺌
    let new_k = k - parseInt(n / 10)
    return 12000 * n + 2000 * new_k
}

🌠 문제

각에서 0도 초과 90도 미만은 예각, 90도는 직각, 90도 초과 180도 미만은 둔각 180도는 평각으로 분류합니다. 각 angle이 매개변수로 주어질 때 예각일 때 1, 직각일 때 2, 둔각일 때 3, 평각일 때 4를 return하도록 solution 함수를 완성해주세요.

  • 예각 : 0 < angle < 90
  • 직각 : angle = 90
  • 둔각 : 90 < angle < 180
  • 평각 : angle = 180

🌠 제한사항

  • 0 < angle ≤ 180

🌠 입출력 예

70 1
91 3
180 4

🌠 입출력 예 설명

입출력 예 #1

  • angle이 70이므로 예각입니다. 따라서 1을 return합니다.

입출력 예 #2

  • angle이 91이므로 둔각입니다. 따라서 3을 return합니다.

입출력 예 #3

  • angle이 180이므로 평각입니다. 따라서 4를 return합니다.

🧞 풀이

function solution(angle) {
    if (angle === 180) {
        return 4
    } else if (angle > 90) {
        return 3
    } else if (angle === 90) {
        return 2
    } else if (angle > 0) {
        return 1
    }
}

+ Recent posts