프로그래머스 level1 25

[Programmers] level 1) 문제 'k번째 수' 풀이 ***

🫠 Programmers (level 1) 👉🏻 문제 37번 (k번째 수) ✏️ 문제 설명 배열 array의 i번째 숫자부터 j번째 숫자까지 자르고 정렬했을 때, k번째에 있는 수를 구하려 합니다. 예를 들어 array가 [1, 5, 2, 6, 3, 7, 4], i = 2, j = 5, k = 3이라면 array의 2번째부터 5번째까지 자르면 [5, 2, 6, 3]입니다. 1에서 나온 배열을 정렬하면 [2, 3, 5, 6]입니다. 2에서 나온 배열의 3번째 숫자는 5입니다. 배열 array, [i, j, k]를 원소로 가진 2차원 배열 commands가 매개변수로 주어질 때, commands의 모든 원소에 대해 앞서 설명한 연산을 적용했을 때 나온 결과를 배열에 담아 return 하도록 solution ..

[Programmers] level 1) 문제 '푸드 파이터 대회' 풀이 ***

🫠 Programmers (level 1) 👉🏻 문제 36번 (푸드 파이터 대회) ✏️ 문제 설명 수웅이는 매달 주어진 음식을 빨리 먹는 푸드 파이트 대회를 개최합니다. 이 대회에서 선수들은 1대 1로 대결하며, 매 대결마다 음식의 종류와 양이 바뀝니다. 대결은 준비된 음식들을 일렬로 배치한 뒤, 한 선수는 제일 왼쪽에 있는 음식부터 오른쪽으로, 다른 선수는 제일 오른쪽에 있는 음식부터 왼쪽으로 순서대로 먹는 방식으로 진행됩니다. 중앙에는 물을 배치하고, 물을 먼저 먹는 선수가 승리하게 됩니다. 이때, 대회의 공정성을 위해 두 선수가 먹는 음식의 종류와 양이 같아야 하며, 음식을 먹는 순서도 같아야 합니다. 또한, 이번 대회부터는 칼로리가 낮은 음식을 먼저 먹을 수 있게 배치하여 선수들이 음식을 더 잘 ..

[Programmers] level 1) 문제 '문자열 내 마음대로 정렬하기' 풀이 ***

🫠 Programmers (level 1) 👉🏻 문제 34번 (문자열 내 마음대로 정렬하기) ✏️ 문제 설명 문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 ["sun", "bed", "car"]이고 n이 1이면 각 단어의 인덱스 1의 문자 "u", "e", "a"로 strings를 정렬합니다. ✏️ 제한 조건 strings는 길이 1 이상, 50 이하인 배열입니다. strings의 원소는 소문자 알파벳으로 이루어져 있습니다. strings의 원소는 길이 1 이상, 100이하인 문자열입니다. 모든 strings의 원소의 길이는 n보다 큽니다. 인덱스 1의 문자가 같은 문자열이 여럿 일 경우,..

[Programmers] level 1) 문제 '크기가 작은 부분 문자열' 풀이 ***

🫠 Programmers (level 1) 👉🏻 문제 32번 (크기가 작은 부분 문자열) ✏️ 문제 설명 숫자로 이루어진 문자열 t와 p가 주어질 때, t에서 p와 길이가 같은 부분문자열 중에서, 이 부분문자열이 나타내는 수가 p가 나타내는 수보다 작거나 같은 것이 나오는 횟수를 return 하는 함수 solution을 완성하세요. 예를 들어, t="3141592"이고 p="271" 인 경우, t의 길이가 3인 부분 문자열은 314, 141, 415, 159, 592입니다. 이 문자열이 나타내는 수 중 271보다 작거나 같은 수는 141, 159 2개입니다. ✏️ 제한사항 1 ≤ p의 길이 ≤ 18 p의 길이 ≤ t의 길이 ≤ 10,000 t와 p는 숫자로만 이루어진 문자열이며, 0으로 시작하지 않습니다..

[Programmers] level 1) 문제 '예산' 풀이

🫠 Programmers (level 1) 👉🏻 문제 31번 (예산) ✏️ 문제 설명 S사에서는 각 부서에 필요한 물품을 지원해 주기 위해 부서별로 물품을 구매하는데 필요한 금액을 조사했습니다. 그러나, 전체 예산이 정해져 있기 때문에 모든 부서의 물품을 구매해 줄 수는 없습니다. 그래서 최대한 많은 부서의 물품을 구매해 줄 수 있도록 하려고 합니다. 물품을 구매해 줄 때는 각 부서가 신청한 금액만큼을 모두 지원해 줘야 합니다. 예를 들어 1,000원을 신청한 부서에는 정확히 1,000원을 지원해야 하며, 1,000원보다 적은 금액을 지원해 줄 수는 없습니다. 부서별로 신청한 금액이 들어있는 배열 d와 예산 budget이 매개변수로 주어질 때, 최대 몇 개의 부서에 물품을 지원할 수 있는지 return ..

[Programmers] level 1) 문제 '직사각형 별찍기' 풀이

🫠 Programmers (level 1) 👉🏻 문제 30번 (직사각형 별 찍기) ✏️ 문제 설명 이 문제에는 표준 입력으로 두 개의 정수 n과 m이 주어집니다. 별(*) 문자를 이용해 가로의 길이가 n, 세로의 길이가 m인 직사각형 형태를 출력해 보세요. ✏️ 제한 조건 n과 m은 각각 1000 이하인 자연수입니다. ✏️ 입출력 예 입력 결과 5, 3 ***** ***** ***** process.stdin.setEncoding('utf8'); process.stdin.on('data', data => { const n = data.split(" "); const a = Number(n[0]), b = Number(n[1]); // 작성 구간 // let star = '' for(let i = 0; i..

[Programmers] level 1) 문제 '최대공약수와 최소공배수' 풀이 ***

🫠 Programmers (level 1) 👉🏻 문제 29번 (최대공약수와 최소공배수) ✏️ 문제 설명 두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환하는 함수, solution을 완성해 보세요. 배열의 맨 앞에 최대공약수, 그다음 최소공배수를 넣어 반환하면 됩니다. 예를 들어 두 수 3, 12의 최대공약수는 3, 최소공배수는 12이므로 solution(3, 12)는 [3, 12]를 반환해야 합니다. ✏️ 제한 사항 두 수는 1 이상 1000000 이하의 자연수입니다. ✏️ 입출력 예 n m return 3 12 [3, 12] 2 5 [1, 10] function solution(n, m) { let gcd_res let gcd = (n, m) => m === 0 ? gcd_res = n : g..

[Programmers] level 1) 문제 '행렬의 덧셈' 풀이

🫠 Programmers (level 1) 👉🏻 문제 28번 (행렬의 덧셈) ✏️ 문제 설명 행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 행, 같은 열의 값을 서로 더한 결과가 됩니다. 2개의 행렬 arr1과 arr2를 입력받아, 행렬 덧셈의 결과를 반환하는 함수, solution을 완성해 주세요. ✏️ 제한 조건 행렬 arr1, arr2의 행과 열의 길이는 500을 넘지 않습니다. ✏️ 입출력 예 arr1 arr2 return [[1,2], [2,3]] [[3,4], [5,6]] [[4,6], [7,9]] [[1], [2]] [[3], [4]] [[4], [6]] function solution(arr1, arr2) { let res = [] for(let i = 0; i < arr1.leng..

[Programmers] level 1) 문제 '3진법 뒤집기' 풀이 ***

🫠 Programmers (level 1) 👉🏻 문제 27번 (3진법 뒤집기) ✏️ 문제 설명 자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해 주세요. ✏️ 제한사항 n은 1 이상 100,000,000 이하인 자연수입니다. ✏️ 입출력 예 n result 45 7 125 229 답을 도출하는 과정은 다음과 같습니다. n(10진법) n(3진법) 앞뒤 반전(3진법) 10진법으로 표현 45 1200 0021 7 function solution(n) { return parseInt((n.toString(3).split('').reverse().join('')), 3) } ✅ 10진법 --> 3진법으로..

[Programmers] level 1) 문제 '같은 숫자는 싫어' 풀이

🫠 Programmers (level 1) 👉🏻 문제 26번 (같은 숫자는 싫어) ✏️ 문제 설명 배열 arr가 주어집니다. 배열 arr의 각 원소는 숫자 0부터 9까지로 이루어져 있습니다. 이때, 배열 arr에서 연속적으로 나타나는 숫자는 하나만 남기고 전부 제거하려고 합니다. 단, 제거된 후 남은 수들을 반환할 때는 배열 arr의 원소들의 순서를 유지해야 합니다. 예를 들면, arr = [1, 1, 3, 3, 0, 1, 1] 이면 [1, 3, 0, 1]을 return 합니다. arr = [4, 4, 4, 3, 3] 이면 [4, 3] 을 return 합니다. 배열 arr에서 연속적으로 나타나는 숫자는 제거하고 남은 수들을 return 하는 solution 함수를 완성해 주세요. ✏️ 제한사항 배열 ar..