본문 바로가기

프로젝트들/코딩 테스트59

[코딩테스트] 프로그래머스 - N으로 표현 (Lv.3) in Python 숫자 N과 number가 주어질 때, N과 사칙연산만 사용해서 표현 할 수 있는 방법 중 N 사용횟수의 최솟값을 return. 예시: 12 = 5 + 5 + (5 / 5) + (5 / 5) 12 = 55 / 5 + 5 / 5 12 = (55 + 5) / 5 12를 5와 사칙연산만으로 표현. 이 중 5를 가장 적게 쓴 경우는 4번 쓴 경우이므로, 4를 반환. 다만, N을 9번 이상 사용해야할 경우 -1을 반환. 프로그래머스 강의를 바탕으로 해답을 작성했습니다. 더 자세한 설명 - programmers.co.kr/learn/courses/30/lessons/42895 동적계획법 (Dynamic Programming) - 고려해야할 범위가 너무 크므로, 주어진 최적화 문제를 재귀적으로, 부분 문제로 나누어, .. 2021. 2. 13.
[코딩테스트] 프로그래머스 - 더 맵게 (Lv.2) in Python 스코빌 지수를 담은 배열 scoville과 원하는 스코빌 지수 K가 주어질 때, 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 섞어야 하는 최소 횟수를 return. 모든 음식 스코빌 지수를 K이상으로 만들기 위해, 가장 낮은 스코빌 지수를 가진 음식을 섞어 새로운 음식을 만든다. 이 때, (섞은 음식의 스코빌 지수) = (가장 맵지 않은 음식의 스코빌 지수) + (2 * 두 번째로 맵지 않은 음식의 스코빌 지수) 프로그래머스 강의 내용을 바탕으로 풀이합니다. programmers.co.kr/learn/courses/30/lessons/42626 풀이 - 가장 맵지 않은 두 음식을 골라야 하므로, sorting은 필수! - 다만 최악의 경우 (n-1) - 전체 음식 수를 n이라고 할 때 - 번 섞어.. 2021. 2. 13.
[코딩테스트] 프로그래머스 - 큰 수 (Lv.2) in Python 파이썬 임의의 수 number에서 k개의 수를 제거했을 때 얻을 수 있는 가장 큰 수를 return. ex. number = 1924, k = 2 가능한 수의 집합 = [19, 12, 14, 92, 94, 24] 이 중 가장 큰 수 94를 return! 프로그래머스 강의를 바탕으로 코드를 작성했습니다. programmers.co.kr/learn/courses/30/lessons/42746 풀이법 결과적으로 앞 자리가 클수록 큰 수이므로, bucket을 하나 만들어, number에서 한 숫자씩 담되, 지금 bucket에 들어간 수보다 넣을 수가 더 크면, 그 둘을 교환한다. (k가 남아있는 동안) number의 모든 숫자를 거친 후에는 (탐색이 끝난 후에는) bucket에 있는 수들을 이어 붙여 반환하면 된다. .. 2021. 2. 13.
[코딩 테스트] 프로그래머스 - 체육복 (Lv.1) in Python 전체 학생 수 n, 체육복 없는 학생들 번호가 담긴 배열 lost, 여벌의 체육복 가져온 학생들의 번호 담긴 배열 reserve가 주어질 때, 체육수업을 들을 수 있는 학생의 최댓값을 return ~> 단, 여벌의 체육복은 바로 앞이나 뒤의 학생에게만 빌려줄 수 있다. 프로그래머스 수업 내용을 토대로 작성한 코드들. programmers.co.kr/learn/courses/30/lessons/42862 해결법 탐욕법 (Greedy) 사용! 각 단계에서 최적의 선택을 함. 현재 단계의 최적해가 문제 전체의 최적성을 해치지 않으면 됨. Python 구현 방법 1 def solution(n, lost, reserve): li = [1] * (n+2) for i in lost: li[i] -= 1 for i i.. 2021. 2. 13.