[프로그래머스] 피로도
·
Algorithm
문제 풀이완전 탐색 알고리즘을 구상해야겠다고 생각이 들어서, 이중 for문을 사용해 해결했다. break를 활용해 피로도가 부족하면 바로 도는걸 중지하도록 하여 시간을 조금 줄여봤다.from itertools import permutationsdef solution(k, dungeons): #0 ~ 던전의 개수 - 1까지 모든 값을 가지는 순열 모두 반환 orders = list(permutations(range(len(dungeons)))) max_dungeon_cnt = 0 #모든 던전 가는 경우의 수 순회 for order in orders : my_tired = k current_dungeon_cnt = 0 ..
[프로그래머스] 귤 고르기
·
Algorithm
문제 풀이from collections import defaultdictdef solution(k, tangerine): sizes = defaultdict(int) box = 0 res = 0 #귤의 크기를 key, 귤의 수를 value로 가지는 dict 생성 for t in tangerine : sizes[t] += 1 #개수별로 sort sizes = dict(sorted(sizes.items(), key = lambda x: x[1], reverse = True)) #가장 많은 귤부터 box에 추가, k개보다 많아지면 res 반환 for size, value in sizes.items() : box += value ..
[프로그래머스] 짝지어 제거하기
·
Algorithm
문제 틀렸던 풀이(시간 초과)#짝지어진 문자열을 제거하는 함수 정의def rm_pair(s): #중복 방지를 위해 set() 사용 c_set = set() #짝지어 제거하기이므로 문자 * 2 해서 set에 넣음 for c in s : c_set.add(c * 2) for pair in c_set : s = s.replace(pair, '') return sdef solution(s): while True: s_after = rm_pair(s) #짝지어진 문자열 제거 전후가 같으면 : 더이상 제거할 문자 X if s == s_after : #문자열이 모두 제거되었을때 ..
[프로그래머스] 최댓값과 최솟값
·
Algorithm
문제 풀이- 레벨 2라고 해서 당황했는데, 레벨보다 정답률을 보고 문제를 선택하는게 좋을 것 같다.def solution(s): #int type으로 리스트에 매핑 num_list = list(map(int, s.split())) res = str(min(num_list)) + " " + str(max(num_list)) return res 1. int type으로 문자열에 있는 숫자들 매핑하여 리스트에 추가2. max, min값을 공백과 함께 res 문자열에 할당
[프로그래머스] 겹치는 선분의 길이
·
Algorithm
문제 풀이def solution(lines): #lines의 요소들의 최소값, 최대값 도출 max_val = max(max(line) for line in lines) min_val = min(min(line) for line in lines) #수직선 그리기(0을 가진 배열로 초기화), 길이는 최대값 - 최소값 + 1 n = max_val - min_val + 1 res_line = [0] * n cnt = 0 #선분들을 그린다 -> 배열의 값을 올린다 for line in lines : for i in range(line[0], line[1]) : res_line[i - min_val] += 1 ..