전체 글 49

[프로그래머스/Javascript] Lv.2 기능개발

https://school.programmers.co.kr/learn/courses/30/lessons/42586 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr ✓ 문제 각 기능별 현재 작업 진도(progresses)와 작업 속도(speeds)를 받아 한 번의 배포마다 몇 개의 작업이 배포되는지 배열로 반환작업은 순서대로 배포되며 이전 작업보다 빠르게 개발된 작업은 이전 작업 배포시 함께 배포 ✓ 풀이과정 0. 입력progresses = [93, 30, 55]speeds = [1, 30, 5] 1. 각 작업의 소요시간 계산Math.ceil((100 - p) / speeds[i] (100-93)/1 = 7(1..

[프로그래머스/Javascript] Lv.2 H-Index

https://school.programmers.co.kr/learn/courses/30/lessons/42747 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr ✓ 문제 h번 이상 인용된 논문 h편 이상일 때 최대 h값 찾기 ✓ 풀이과정 처음에는 아래 코드와 같이 구현했습니다function solution(citations) { let h = citations.length; for (h; h > -1; h--) { if (citations.filter((c) => c >= h).length >= h) break; } return h;} 논문 길이만큼 반복하면서 h보다 큰 인용 횟수를 가진 논문의..

[프로그래머스/Javascript] Lv.2 구명보트

https://school.programmers.co.kr/learn/courses/30/lessons/42885 코딩테스트 연습 - 구명보트알고리즘 문제 연습 카카오톡 친구해요! 프로그래머스 교육 카카오 채널을 만들었어요. 여기를 눌러, 친구 추가를 해주세요. 신규 교육 과정 소식은 물론 다양한 이벤트 소식을 가장 먼저 알려school.programmers.co.kr ✓ 문제 모든 사람(people)을 구출하기 위해 필요한 최소 구명보트의 개수단, 구명보트에는 최대 2명씩 무게 제한(limit)만큼만 탑승 가능 ✓ 풀이과정 1. people 배열을 오름차순으로 정렬하고 배열의 왼쪽(가장 가벼운 사람)을 left, 오른쪽(가장 무거운 사람)을 right로 선언2. 가장 가벼운 사람과 가장 무거운 사람..

[프로그래머스/Javascript] Lv.2 카펫

https://school.programmers.co.kr/learn/courses/30/lessons/42842 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr ✓ 문제 노란 카펫의 갯수 yellow 와 그 카펫을 감싸는 1줄 테두리인 갈색 카펫의 갯수 brown 으로 전체 카펫의 [가로, 세로]를 반환카펫은 정사각형이거나, 가로로 긴 직사각형✓ 풀이과정 임의의 h 기준으로 하나씩 증가하며 아래 조건을 만족하는 w를 발견- 1개의 노란색 카펫의 테두리가 되는 2개의 갈색 카펫이 있기 때문에 카펫의 최소 h = 3- 카펫은 정사각형 또는 가로가 긴 직사각형이라는 조건이 있으므로 h - 노란색 카펫은 갈색 테두..

[프로그래머스/Javascript] Lv.2 N개의 최소공배수

https://school.programmers.co.kr/learn/courses/30/lessons/12953 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr ✓ 문제 숫자 배열(n)을 받아서 숫자들의 최소공배수 계산 ✓ 풀이과정 처음 풀이했던 과정은 아래와 같습니다 1. 숫자 배열(n)을 오름차순으로 정렬해서 가장 큰 값(max)을 구하고 이를 제외한 새로운 배열(newArr) 생성2. max 값의 배수(num)를 돌면서 남은 숫자들이 나누어 떨어지는지 확인3. 모든 값이 나누어 떨어졌을 때만 모든 수의 최소공배수라고 판단하여 해당 값을 반환 function solution(arr) { let newA..

[코딩테스트/Javascript] 최대공약수(GCD)/최소공배수(LCM)와 유클리드 호제법

코테 빈출 개념인 최대공약수와 최소공배수를 계산하는 방법을 정리해 보겠습니다 최대공약수 = Greatest Common Divisor = GCD최소공배수 = Least Common Multiple = LCM 수학 공식소인수분해를 통해 계산공배수최소공배수의 배수공약수최대공약수의 약수최대공약수공통 소인수, 지수는 최소최소공배수모든 소인수, 지수는 최대 12 = 2² × 318 = 2 × 3² GCD = 2 × 3 = 6LCM = 2² × 3² = 36 최대공약수약수 이용→ 두 수의 공약수 중 최대 값을 구한다 1. i를 1부터 두 수(n, m) 중 더 작은 값(min)의 제곱근까지 증가시키며 순회공약수는 min을 넘을 수 없다. 예를 들어 n = 12, m = 15일 경우 두 수의 공약수는 12를 넘길 수 ..

프로그래머스 2026.01.30

[프로그래머스/Javascript] Lv.1 최소직사각형

https://school.programmers.co.kr/learn/courses/30/lessons/86491 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr ✓ 문제 다양한 명함의 크기를 모두 수납 가능한 지갑의 크기 (가로 X 세로)를 구하라단, 명함의 가로 세로를 변경해서 수납할 수 있음 ✓ 풀이과정 1. 명함들의 가로, 세로 값을 배열(sizes)로 전달받으면 작은 것을 가로(w)로 큰 것을 세로(h)로 정렬2. 가로에서 가장 큰 값과 세로에서 가장 큰 값을 찾아서 저장(walletSize)하고 가로 x 세로를 계산하여 지갑의 크기 반환 1번의 정렬 과정을 거치는 이유는 위와 같은 다양한 크기의 사..

[코딩테스트/Javascript] 약수와 약수 찾기

코딩테스트를 풀면서 약수를 찾아야하는 문제가 자주 출제되어 활용할 수 있는 코드를 정리했습니다 약수란 어떤 수를 나누어 떨어지게 하는 수를 의미합니다1의 약수 → 110의 약수 → 1, 2, 5, 10100의 약수 → 1, 2, 4, 5, 10, 20, 25, 50, 100 n의 약수는 a x b 의 형태로 쌍을 이루기 때문에 n의 모든 약수를 찾아야 한다면 n의 제곱근까지만 확인한다면 n의 모든 약수를 찾을 수 있습니다 위의 예시에서 n이 36이라면, 1부터 n의 제곱근인 6까지만 확인한다면 n = a x b의 형태에서 b = n / a 계산으로 함께 구할 수 있습니다 단, 6x6과 같이 두 약수가 동일한 경우라면 중복이 발생하기 때문에 이 경우에는 중복 없이 한번만 약수를 카운트하는 조건이 필요..

프로그래머스 2026.01.28

[프로그래머스/Javascript] Lv.1 기사단원의 무기

https://school.programmers.co.kr/learn/courses/30/lessons/136798 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr ✓ 문제 기사들은 번호가 지정되어 있으며(1~number) 기사는 자신의 번호의 약수 개수에 해당하는 공격력을 가진 무기를 구매단, 공격력 제한수치(limit)가 있으며 이거보다 크면 협약기관에서 정한 공격력(power)을 가진 무기를 구매무기 공격력 1 당 철 1kg로 계산해서 모든 기사들의 무기를 제작하는데 필요한 철 무게를 반환 ✓ 풀이과정 1. 모든 기사번호(1~number)를 순회하며 기사번호의 약수의 개수를 저장하여 구매할 무기의 공격력..

[프로그래머스/Javascript] Lv.1 체육복

https://school.programmers.co.kr/learn/courses/30/lessons/42862 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr ✓ 풀이과정 1. 포함 여부 및 삭제를 쉽게 사용하기 위해 lost와 reserve를 Set으로 변환해서 저장2. 체육복을 도난당한 학생 번호(lostIndex)를 순회하며 해당 번호(i)가 여벌 체육복이 있는 학생 번호(reserveIndex)에도 있는 번호라면 여벌 체육복을 보유했지만 도난 당한 학생이기 때문에 본인의 체육복 한벌만 보유하고 있는 학생이므로 lostIndex와 reservIndex에서 제거3. 체육복을 도난당한 학생 번호(lostI..