Coding test 104

[프로그래머스] 체육복 (Level 1)

문제 점심시간에 도둑이 들어, 일부 학생이 체육복을 도난당했습니다. 다행히 여벌 체육복이 있는 학생이 이들에게 체육복을 빌려주려 합니다. 학생들의 번호는 체격 순으로 매겨져 있어, 바로 앞번호의 학생이나 바로 뒷번호의 학생에게만 체육복을 빌려줄 수 있습니다. 예를 들어, 4번 학생은 3번 학생이나 5번 학생에게만 체육복을 빌려줄 수 있습니다. 체육복이 없으면 수업을 들을 수 없기 때문에 체육복을 적절히 빌려 최대한 많은 학생이 체육수업을 들어야 합니다. 전체 학생의 수 n, 체육복을 도난당한 학생들의 번호가 담긴 배열 lost, 여벌의 체육복을 가져온 학생들의 번호가 담긴 배열 reserve가 매개변수로 주어질 때, 체육수업을 들을 수 있는 학생의 최댓값을 return 하도록 solution 함수를 작성..

Coding test 2022.04.21

[프로그래머스] 나머지가 1이 되는 수 찾기 (Level 1)

문제 자연수 n이 매개변수로 주어집니다. n을 x로 나눈 나머지가 1이 되도록 하는 가장 작은 자연수 x를 return 하도록 solution 함수를 완성해주세요. 답이 항상 존재함은 증명될 수 있습니다. 제한사항 3 ≤ n ≤ 1,000,000 나의 풀이 function solution(n){ for(let x = 2; x < n; x++) { if (n % x === 1) return x; } } for문 안에 return이 있어도 전체 함수의 반환값이 된다. 정확도 테스트 결과 테스트 1에서 시간이 많이 걸렸지만 통과 다른 풀이 function solution(n, x = 1) { while (x++) { if (n % x === 1) { return x; } } } 특별히 다른 방법은 아니지만, ..

Coding test 2022.04.20

[프로그래머스] 최소 직사각형 (Level 1)

문제 명함 지갑을 만드는 회사에서 지갑의 크기를 정하려고 합니다. 다양한 모양과 크기의 명함들을 모두 수납할 수 있으면서, 작아서 들고 다니기 편한 지갑을 만들어야 합니다. 이러한 요건을 만족하는 지갑을 만들기 위해 디자인팀은 모든 명함의 가로 길이와 세로 길이를 조사했습니다. 아래 표는 4가지 명함의 가로 길이와 세로 길이를 나타냅니다. 명함 번호 가로 길이 세로 길이 1 60 50 2 30 70 3 60 30 4 80 40 가장 긴 가로 길이와 세로 길이가 각각 80, 70이기 때문에 80(가로) x 70(세로) 크기의 지갑을 만들면 모든 명함들을 수납할 수 있습니다. 하지만 2번 명함을 가로로 눕혀 수납한다면 80(가로) x 50(세로) 크기의 지갑으로 모든 명함들을 수납할 수 있습니다. 이때의 지..

Coding test 2022.04.20

[프로그래머스] 3진법 뒤집기 (Level 1)

문제 자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요. 제한사항 n은 1 이상 100,000,000 이하인 자연수입니다. 나의 풀이 function solution(n) { // n (3진법) -> 뒤집음 -> 10진법 return parseInt(n.toString(3).split("").reverse().join(""), 3); } 정확도 테스트 결과 다른 풀이 1. 간단한 풀이 const solution = (n) => { return parseInt([...n.toString(3)].reverse().join(""), 3); } 화살표 함수로 변경해서 썼고, 전개구문을 활용했다. ..

Coding test 2022.04.19

[프로그래머스] 약수의 개수와 덧셈 (Level 1)

문제 두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주세요. 제한사항 1 ≤ left ≤ right ≤ 1,000 나의 풀이 function solution(left, right) { // left ~ right 중 // 약수 짝수인 수 = +n // 약수 홀수인 수 = -n // 모두 더한 숫자 반환 let arr = []; // for: 숫자 하나씩 루프 // for: 숫자 2~n까지 나눔 -> 나머지=0 -> sum +1 // sum % 2 = 0 -> arr.push(+i) // sum % 2 != 0 -> arr.push..

Coding test 2022.04.19

[프로그래머스] 음양 더하기 (Level 1)

문제 어떤 정수들이 있습니다. 이 정수들의 절댓값을 차례대로 담은 정수 배열 absolutes와 이 정수들의 부호를 차례대로 담은 불리언 배열 signs가 매개변수로 주어집니다. 실제 정수들의 합을 구하여 return 하도록 solution 함수를 완성해주세요. 제한사항 absolutes의 길이는 1 이상 1,000 이하입니다. absolutes의 모든 수는 각각 1 이상 1,000 이하입니다. signs의 길이는 absolutes의 길이와 같습니다. signs[i] 가 참이면 absolutes[i] 의 실제 정수가 양수임을, 그렇지 않으면 음수임을 의미합니다. 나의 풀이 function solution(ab, s) { // absolutes => 절대값 배열 // signs => 양(true), 음(f..

Coding test 2022.04.19

[프로그래머스] 두 개 뽑아서 더하기 (Level 1)

문제 정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요. 제한사항 numbers의 길이는 2 이상 100 이하입니다. numbers의 모든 수는 0 이상 100 이하입니다. 나의 풀이 function solution(nums) { // 배열의 두 수 더한 값 배열 // for: nums[i] + nums[j] -> arr 중복검사 -> 없으면 추가 let arr = []; for(let i = 0; i < nums.length; i++) { for(let j = i + 1; j < nums.length; j++) { let sum = nums..

Coding test 2022.04.19

[프로그래머스] K번째 수 (Level 1)

문제 배열 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 함수를 작성해주세요. 제한사항 array의 길이는 1 이상 100 이하입니다. arra..

Coding test 2022.04.19

[프로그래머스] 소수 만들기 (Level 1)

문제 주어진 숫자 중 3개의 수를 더했을 때 소수가 되는 경우의 개수를 구하려고 합니다. 숫자들이 들어있는 배열 nums가 매개변수로 주어질 때, nums에 있는 숫자들 중 서로 다른 3개를 골라 더했을 때 소수가 되는 경우의 개수를 return 하도록 solution 함수를 완성해주세요. 제한사항 nums에 들어있는 숫자의 개수는 3개 이상 50개 이하입니다. nums의 각 원소는 1 이상 1,000 이하의 자연수이며, 중복된 숫자가 들어있지 않습니다. 나의 풀이 1. 첫 번째 풀이 function solution(nums) { let answer = 0; for(let i = 0; i < nums.length; i++) { for(let j = i + 1; j < nums.length; j++) { ..

Coding test 2022.04.18

[프로그래머스] 없는 숫자 더하기 (Level 1)

문제 0부터 9까지의 숫자 중 일부가 들어있는 정수 배열 numbers가 매개변수로 주어집니다. numbers에서 찾을 수 없는 0부터 9까지의 숫자를 모두 찾아 더한 수를 return 하도록 solution 함수를 완성해주세요. 제한사항 1 ≤ numbers의 길이 ≤ 9 0 ≤ numbers의 모든 원소 ≤ 9 numbers의 모든 원소는 서로 다릅니다. 나의 풀이 function solution(numbers) { // 0~9 중 없는 숫자 더한 값 반환 let list = [0,1,2,3,4,5,6,7,8,9] // list에서 numbers의 값 하나씩 지우기 for (let i = 0; i < numbers.length; i++) { list.splice(list.indexOf(numbers[..

Coding test 2022.04.18