목록 code review/sort (10)
KEEP GOING
https://programmers.co.kr/learn/courses/30/lessons/42626# 코딩테스트 연습 - 더 맵게 매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같 programmers.co.kr 문제를 풀기 위해 우선 떠올려야 할 조건은 모든 음식의 스코빌 지수를 -1로 만들 수 없는 경우이다. scoville 리스트에 원소가 하나 남았을 때, 이 값의 스코빌 지수가 k 미만인 경우 더이상 합칠 음식이 없기에 -1을 리턴해주었다. 여기서 주의할 점은 heapq 사용 시 heapq.heappop(리스트) 를 사용할 경우, 리스트가 비어있다면..
https://www.acmicpc.net/problem/1202 1202번: 보석 도둑 첫째 줄에 N과 K가 주어진다. (1 ≤ N, K ≤ 300,000) 다음 N개 줄에는 각 보석의 정보 Mi와 Vi가 주어진다. (0 ≤ Mi, Vi ≤ 1,000,000) 다음 K개 줄에는 가방에 담을 수 있는 최대 무게 Ci가 주어진다. (1 ≤ Ci www.acmicpc.net 1. 정답 코드 import heapq from collections import deque # 보석의 개수, 가방의 개수 n, k = map(int, input().split()) jewel = [] for _ in range(n): # 보석의 무게, 보석의 가격 m, v = map(int, input().split()) jewel.a..
https://programmers.co.kr/learn/courses/30/lessons/42889 코딩테스트 연습 - 실패율 실패율 슈퍼 게임 개발자 오렐리는 큰 고민에 빠졌다. 그녀가 만든 프랜즈 오천성이 대성공을 거뒀지만, 요즘 신규 사용자의 수가 급감한 것이다. 원인은 신규 사용자와 기존 사용자 사이에 스 programmers.co.kr 1. 테스트케이스에서 실패한 코드 (정확성 33.3) def solution(N, stages): answer = [] stages.sort() for i in range(1,N+1): count = 0 numOfPlayers = 0 while stages: numOfPlayers = max(numOfPlayers, len(stages)) if i == stag..
문제 철수는 온라인으로 컴퓨터공학강의를 듣고 있다. 이때 각 온라인강의는 선수강의가 있을 수 있는데, 선수 강의가 있는 강의는 선수 강의를 먼저. 들어야만 해당강의를 들을 수 있다. 예를들어 '알고리즘’ 강의의 선수 강의로 '자료구조'가 존재한다면, ‘자료구조를 들은 이후에 ‘알고리즘' 강의를 들을 수 있다. 철수는 총 N개의 강의를 듣고자 한다. 모든 강의는 1번부터 N번까지의 번호를 가진다. 또한 동시에 여러 개의 강의를 들을 수 있다고 가정한다. 예를 들어 N=3일 때, 3번강의의 선수 강의로 1번과 2번강의가 있고, 1번과 2번강의는 선수강의가 없다고 가정하자. 그리고 각 강의에 대하여 강의 시간이 다음과 같다고 가정하자. 1번 강의: 30시간 2번 강의: 20시간 3번 강의: 40시간 이 경우 ..
https://programmers.co.kr/learn/courses/30/lessons/42579 코딩테스트 연습 - 베스트앨범 스트리밍 사이트에서 장르 별로 가장 많이 재생된 노래를 두 개씩 모아 베스트 앨범을 출시하려 합니다. 노래는 고유 번호로 구분하며, 노래를 수록하는 기준은 다음과 같습니다. 속한 노래가 programmers.co.kr 1. 성공한 코드 def solution(genres, plays): answer = [] # 장르별 고유번호:재생횟수를 담음 dic = {} n = len(genres) for i in range(n): genre = genres[i] if genre in dic.keys(): dic[genre][i] = plays[i] else: dic[genre] = {..
dic = {'pop': 3100, 'classic': 1450, 'trot':620} 해당 딕셔너리에 대해 key 값과 value 값을 기준으로 딕셔너리를 정렬하는 방법을 살펴보고자 한다. 1. key값을 기준으로 오름차순으로 정렬하여 리스트 반환하기 오름차순은 디폴트값이며 내림차순으로 정렬하고 싶은 경우에는 sorted() 내에 매개변수로 reverse=True 값을 넣어준다. # key 값을 기준으로 오름차순 정렬하여 리스트 출력 print(sorted(dic)) # key 값을 기준으로 내림차순 정렬한 리스트 출력 print(sorted(dic, reverse=True)) 2. key 값을 기준으로 오름차순으로 정렬한 딕셔너리 생성하기 # key 값을 기준으로 정렬된 (key,value) 원소쌍을..
https://programmers.co.kr/learn/courses/30/lessons/42746# 코딩테스트 연습 - 가장 큰 수 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 programmers.co.kr 1. 에러난 코드 def solution(numbers): answer = '' numbers = [str(number)*3 for number in numbers] numbers.sort(key=lambda x:(-int(x[0]),-int(x[1]),-int(x[2]))) for number ..
https://www.acmicpc.net/problem/1181 1181번: 단어 정렬 첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다. www.acmicpc.net 1. 코드 구현 import sys n = int(sys.stdin.readline()) a = [] for i in range(n): #공백 제거 a.append(sys.stdin.readline().strip()) # 단어 중복시 한 번씩만 출력 a = list(set(a)) # 문자열 길이순, 길이가 같다면 사전순 정렬 a.sort(key=lambda x:(len(x),x)) fo..