본문 바로가기
반응형

전체 글334

[프로그래머스][힙(heap)] 더 맵게 programmers.co.kr/learn/courses/30/lessons/42626 코딩테스트 연습 - 더 맵게 매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같 programmers.co.kr 해설 시키는대로 heap을 이용해 풀면 된다. 한번 스코빌 지수를 계산할때마다 전체 원소의 수가 하나씩 줄어드는데 이때 heap의 사이즈가 0이 되면 바로 return -1을 해주면 된다. import heapq def solution(scoville, K): answer = 0 q = [] for i in scoville: heapq.heappush(q,i) w.. 2021. 3. 25.
[프로그래머스][정렬] H-Index 해설 문제를 보면 x번 -> 세로축 x편 -> 가로축 이라고 생각 할 수 있다. 풀이방법 내림차순으로 정렬한다 가로세로가 h인 정사각형을 떠올리고 정사각형의 한 변의 길이가 가장 최대일때를 계산한다. def solution(citations): citations.sort(reverse=True) length = len(citations) answer = 0 for i in range(length): if citations[i] < i+1: break else: answer = i+1 return answer 다른사람 풀이를 보니 아래와 같이 개쩌는 풀이를 발견했다. 아이디어는 똑같은데 enumerate를 이용한게 참으로 멋있구만. def solution(citations): citations.sort(r.. 2021. 3. 25.
[프로그래머스][정렬] 가장 큰 수 programmers.co.kr/learn/courses/30/lessons/42746 코딩테스트 연습 - 가장 큰 수 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 programmers.co.kr 아이디어 문자열 A+B, 로 만든 숫자와 B+A로 만든 숫자를 비교하여 어느게 더 큰수인지 확인하고 정렬한다 파이썬 문자열 비교를 이용하면 사전순으로 정렬해주는데 이걸 수 비교수단으로 이용할 수 있다 답이 0일 경우에는 0만 리턴해준다.(마지막 테스트 케이스) from functools import cmp_to_.. 2021. 3. 24.
[프로그래머스][정렬] K번째수 해설 시키는대로 하면 된다. def solution(array, commands): answer = [] for i, j, k in commands: sorted_array = sorted(array[i-1:j]) answer.append(sorted_array[k-1]) return answer 2021. 3. 24.
파이썬 any, all 활용하기 파이썬 내부에서 any와 all의 함수 구현은 아래와 같다. 그냥 리스트 순회하면서 True False만 체크해주는 함수이다. any => 요소중에 하나라도 True가 있으면 True 리턴, 전부다 False이면 False 리턴 all => 요소 모두가 True이면 True 리턴, 하나라도 False가 있으면 False 리턴 def any(iterable): for element in iterable: if element: return True return False def all(iterable): for element in iterable: if not element: return False return True 특정 조건을 어떤 리스트에서 체크 할 때 파이썬에서는 any와 all을 활용하여 코드를 .. 2021. 3. 19.
[프로그래머스][스택/큐] 기능개발 programmers.co.kr/learn/courses/30/lessons/42586 코딩테스트 연습 - 기능개발 프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 programmers.co.kr 작업이 끝나는 날짜를 배열로 만든다. 그걸 큐에 담아서 첫번째 요소 기준으로 다음 요소가 작으면 하나하나 pop 해나가면서 카운트한다. from math import ceil from collections import deque def solution(progresses, speeds): answer = [] days = deque() for i, j in zip(pr.. 2021. 3. 19.
[프로그래머스][스택/큐] 주식가격 programmers.co.kr/learn/courses/30/lessons/42584 코딩테스트 연습 - 주식가격 초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요. 제한사항 prices의 각 가격은 1 이상 10,00 programmers.co.kr 스택/큐 문제라고 해서 계속 생각했는데 아닌거 같다. 문제 조건을 보면 10000 단위이다. 10000^2은 1억이니깐 cpu 가 Ghz(10억)인걸 감안하면 초단위 안으로 계산 가능하다 즉 N^2 으로 이중포문으로 풀어도 된다는 뜻 제출하고 다른사람 풀이 보니 역시나 N^2으로 풀었다. 어이..... def solution(price.. 2021. 3. 19.
[프로그래머스][해시] 베스트앨범 programmers.co.kr/learn/courses/30/lessons/42579 코딩테스트 연습 - 베스트앨범 스트리밍 사이트에서 장르 별로 가장 많이 재생된 노래를 두 개씩 모아 베스트 앨범을 출시하려 합니다. 노래는 고유 번호로 구분하며, 노래를 수록하는 기준은 다음과 같습니다. 속한 노래가 programmers.co.kr 이게 왜 해시문제이지... 전형적인 heap 문제인거 같은 느낌인데.... 일단 딕셔너리를 사용하긴 했다. 아이디어는 이렇다. zip으로 장르와 플레이수를 합친 리스트를 만든뒤 dictionary 자료형으로 장르별 플레이수를 만든다. 위에 나온 조건에 맞는 heap을 구현할 class를 생성한다. heappop()을 하면서 dictionary 자료형으로 장르당 2번 나왔는지.. 2021. 3. 17.
파이썬 이중 리스트 순회하며 특정요소 꺼내기 문제풀다가 이중리스트에서 요소꺼내는데 꿀팁 발견해서 적어봄 >>> mylist = [["물고기", "붕어"], ["식물","장미"], ["포유류", "소"], ["고기", "소고기"]] >>> list1 = [key for key, value in mylist] # 첫번째 요소 꺼내옴 >>> list2 = [x[1] for x in mylist] # 두번째 요소 꺼내옴 >>> list1 ['물고기', '식물', '포유류', '고기'] >>> list2 ['붕어', '장미', '소', '소고기'] 2021. 3. 17.
반응형