본문 바로가기

2021/코딩테스트24

[프로그래머스] Lv.2 - 더 맵게 (Python) programmers.co.kr/learn/courses/30/lessons/42626?language=python3 코딩테스트 연습 - 더 맵게 매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같 programmers.co.kr import heapq as hq def solution(scoville, K): answer = 0 # scoville 리스트를 heapq로 hq.heapify(scoville) while True: # min1 : 제일 작은 맵기, min2 : 두번째로 작은 맵기입니다. min1 = hq.heappop(scoville) min2 .. 2021. 1. 4.
[프로그래머스] Lv.2 - 기능개발 (python) programmers.co.kr/learn/courses/30/lessons/42586 코딩테스트 연습 - 기능개발 프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 programmers.co.kr def solution(progresses, speeds): # 배포 날 몇 개의 기능 배포되는지 list answer = [] # 작업의 개수가 있을경우 반복 while len(progresses) > 0: # 람다를 통해 작업 진도와 속도를 더해서 진행되는 작업률을 표현 # (이때, 100이 넘어가도 계속 진행했습니다. 왜냐하면 100이 넘어가면 완성이 된거기때문에.. 2021. 1. 4.
[프로그래머스] Lv.2 - 소수찾기 (Python) programmers.co.kr/learn/courses/30/lessons/42839?language=python3 코딩테스트 연습 - 소수 찾기 한자리 숫자가 적힌 종이 조각이 흩어져있습니다. 흩어진 종이 조각을 붙여 소수를 몇 개 만들 수 있는지 알아내려 합니다. 각 종이 조각에 적힌 숫자가 적힌 문자열 numbers가 주어졌을 때, 종이 programmers.co.kr Stpes num : 입력받은 숫자 문자열을 하나씩 리스트로 변환합니다. finder(x) : 소수 찾는 함수를 만들었습니다. 2-1 소수는 2부터 이므로, x가 1보다 작거나 같으면, False 반환합니다. 2-2 x가 1보다 크면, 2부터 x의 제곱근까지 나누어지는 수 없으면 True(소수)반환합니다. 소수 개수 세기위한 cou.. 2021. 1. 2.
[프로그래머스] Lv.2 - H-Index (Python) programmers.co.kr/learn/courses/30/lessons/42747 코딩테스트 연습 - H-Index H-Index는 과학자의 생산성과 영향력을 나타내는 지표입니다. 어느 과학자의 H-Index를 나타내는 값인 h를 구하려고 합니다. 위키백과1에 따르면, H-Index는 다음과 같이 구합니다. 어떤 과학자가 발표 programmers.co.kr Steps 내림차순 정렬 M = 가장 인용 많이 된 논문의 인용 수 h = 가장 인용 많이 된 수부터 0까지 감소하며 반복 모든 논문 하나하나 h와 인용 수 비교하기 h 보다 인용 많이 되었으면, count+ 1 만약 h보다 count(인용된 논문의 수) 많으면 h를 return h보다 인용 많지 않다면, h를 1 줄여서 다시 시도한다. 코드 .. 2021. 1. 1.
[프로그래머스] Lv.2 - 다리를 지나는 트럭 (Python) Steps 1. 경과 시간(time)과 다리를 건너는 트럭 (queue)를 선언합니다. 2. 모든 트럭이 지나갈 때까지 반복합니다. 3. 대기 트럭이 0이라면(모든 트럭이 다리를 지나거나 다리를 건너는 중) 3-1 while문이 계속 진행되도록 pass 합니다. 4. 대기트럭의 가장 첫 트럭의 무게가 현재 다리 무게보다 작을 경우 다리를 건너도록 합니다. 4-1. 트럭이 다리위로 올라오면 그 무게만큼 weight를 빼줍니다. 4-2. 트럭이 다리에 올라온 시간을 튜플로 기록합니다. 5. 3번, 4번이 진행되면 time을 1 더합니다. 6. 다리를 건너는 트럭의 출발 시간과 현재 시간의 차이를 이용하여 트럭이 다리를 건너는 시간을 구합니다. 6-1 만약 출발 시간과 현재시간의 차이가 다리를 건너는 시간과 .. 2021. 1. 1.
[프로그래머스] Lv.2 - 프린터 (Python) programmers.co.kr/learn/courses/30/lessons/42587 코딩테스트 연습 - 프린터 일반적인 프린터는 인쇄 요청이 들어온 순서대로 인쇄합니다. 그렇기 때문에 중요한 문서가 나중에 인쇄될 수 있습니다. 이런 문제를 보완하기 위해 중요도가 높은 문서를 먼저 인쇄하는 프린 programmers.co.kr 입력받은 리스트 priorities에서 첫 번째 element가 가장 큰 값인지 확인합니다. 가장 큰 값이라면 출력(pop)하고 출력 횟수(answer) 증가시킵니다. 처음 지정한 location이 0이라면, 출력 횟수를 return 합니다. 처음 지정한 location이 음수라면, 남은 priorities의 길이만큼 더합니다. location 1 빼서 위치 이동 prioriti.. 2020. 12. 29.
[프로그래머스] Lv.2 - 위장 (Python) programmers.co.kr/learn/courses/30/lessons/42578 코딩테스트 연습 - 위장 programmers.co.kr 1) all_clothes : 의상 종류의 "수" 채워 넣을 리스트 2) class_clothes : 입력받은 모든 의상 class 리스트 3) class_clothe : 입력받은 의상 중복 제외한 class 리스트 4) 중복 제외 의상 class 리스트 element에서 하나씩 꺼내서 모든 의상 class 리스트에서 개수를 세어 all_clothes에 append 합니다. 5) all_clothes에서 각 의상 종류의 수 값에 +1 을 더하여 곱하고 마지막에 1을 뺐습니다. 6) 만약 특정 의상(headgear) 수가 3개, 다른 의상(eyewear)의 수가 .. 2020. 12. 29.
[프로그래머스] Lv.1 - 실패율 (Python) programmers.co.kr/learn/courses/30/lessons/42889 코딩테스트 연습 - 실패율 실패율 슈퍼 게임 개발자 오렐리는 큰 고민에 빠졌다. 그녀가 만든 프랜즈 오천성이 대성공을 거뒀지만, 요즘 신규 사용자의 수가 급감한 것이다. 원인은 신규 사용자와 기존 사용자 사이에 스 programmers.co.kr [문제] 슈퍼 게임 개발자 오렐리는 큰 고민에 빠졌다. 그녀가 만든 프렌즈 오천성이 대성공을 거뒀지만, 요즘 신규 사용자의 수가 급감한 것이다. 원인은 신규 사용자와 기존 사용자 사이에 스테이지 차이가 너무 큰 것이 문제였다. 이 문제를 어떻게 할까 고민 한 그녀는 동적으로 게임 시간을 늘려서 난이도를 조절하기로 했다. 역시 슈퍼 개발자라 대부분의 로직은 쉽게 구현했지만, 실.. 2020. 12. 29.
[프로그래머스] Lv.1 - 예산 (Python) Sol1) d를 오름차순으로 정렬합니다. 예산이 적은 부서일수록 index가 낮기 때문에 index가 0인 부서부터 예산을 할당합니다. 예산을 할당하면, 그 부서는 pop으로 빼고, answer(예산 할당 부서의 수)을 1 추가합니다. def solution(d, budget): answer = 0 d.sort() while budget > 0: if budget - d[0] >=0 : budget -= d.pop(0) answer += 1 else: return answer return answer print(solution([1,3,2,5,4],9)) [out] 3 하지만 저는 런타임 에러를 마주했습니다..! Sol2) def solution(d, budget): answer = 0 while bud.. 2020. 12. 21.
[백준] 10867 - 중복 빼고 정렬하기_python 1. 문제 N개의 정수가 주어진다. 이때, N개의 정수를 오름차순으로 정렬하는 프로그램을 작성하시오. 같은 정수는 한 번만 출력한다. 2. 입력 첫째 줄에 수의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째에는 숫자가 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 3. 출력 첫째 줄에 수를 오름차순으로 정렬한 결과를 출력한다. 이때, 같은 수는 한 번만 출력한다. 얼핏 보면 쉬운 문제이지만 많은 시행착오가 있었습니다..! 🤦‍♂️ N = int(input()) nums = input().split() nums = sorted([int(i) for i in nums ]) num = [] for i in range(0, len(nums)): if nums[i] not in n.. 2020. 12. 10.
[프로그래머스] Lv.1 - 직사각형 별찍기 _파이썬 직사각형 별찍기 직사각형 별찍기 이 문제에는 두 개의 정수를 input을 통해 입력받습니다. 입력받은 두 개의 숫자를 띄어쓰기 간격을 통해 a와 b로 map을 통해 선언합니다. 이때 a, b에 있는 정수만큼 가로 a 개 , 세로 b개 => axb Matrix모양의 별을 만들어야 합니다. - 저는 1행부터 b행까지 한 행씩 출력하기로 생각했습니다. - stars에 a만큼의 별 모양을 지정하기 위해 문자'*'에 a를 곱해서 a만큼의 '*'을 선언했습니다. - 그리고 for문을 통해 b번 반복해서 b행까지 출력을 해서 완성했습니다! a, b = map(int, input().strip().split(' ')) stars = '*'*a for i in range(b): print(stars) [input] 6 .. 2020. 12. 5.
[프로그래머스]Lv.1 - 제일 작은 수 제거하기_파이썬 제일 작은 수 제거하기 정수를 저장한 배열, arr에서 가장 작은 수를 제거한 배열을 리턴하는 함수, solution을 완성해야 한다. step 1. arr의 element가 1이라면, -1을 return 한다 step 2. 제일 작은 수를 찾는다. step 3. 제일 작은 수를 arr에서 뺀다. (이때, arr의 빼는 element를 제외한 나머지 index 변하면 안 된다) 제일 작은 수를 찾기 위해서 정렬 후 맨 앞에 있는 값(제일 작은 값)을 arr_min에 저장하고 arr에서 그 element를 찾아서 빼도록 했습니다! def solution(arr): answer = [] if len(arr) == 1: answer.append(-1) else: arr_min = sorted(arr).pop(.. 2020. 12. 4.