본문 바로가기

코딩테스트70

[프로그래머스] 탐욕법(Greedy) - 체육복 나의 답안...... def solution(n, lost, reserve): for i in reserve: for l in lost: if len(lost) == 0: return n elif i-1==l: lost.remove(i-1) elif i+1--l: lost.remove(i+1) return n - len(lost) 문제를 단순히 생각한 것 같다......... 여벌 체육복을 잘 생각했어야 했다.. 다른 사람 풀이 def solution(n, lost, reserve): _reserve = [r for r in reserve if r not in lost] _lost = [l for l in lost if l not in reserve] for r in _reserve: f = r - 1 .. 2024. 3. 4.
[프로그래머스] 탐욕법(Greedy) - 단속카메라 나의 답 def solution(routes): routes.sort() #정렬 location = routes[0][1] # 카메라의 끝지점 설정 camera = 1 # 카메라 개수 for start, end in routes[1:]: # 새로운 차량의 시작시점과, 기존 카메라의 끝 지점 비교 if location 2024. 2. 28.
[코딩테스트] Python 스택, 큐 정리 헷갈리니 정리.. 스택 stack = [] stack.append(5) stack.pop() print(stack) # 최하단 원소부터 출력 print(stack[::-1]) # 최상단 원소부터 출력 큐 from collections import deque queue = deque() queue.append(5) queue.popleft() print(queue) # 먼저 들어온 순서대로 출력 queue.reverse() # 다음 출력을 위해 역순으로 바꾸기 print(queue) # 나중에 들어온 원소부터 출력 print(list(queue)) # deque 객체를 리스트 자료형으로 변경 DFS 깊이 우선 탐색이라고도 부르며, 그래프에서 깊은 부분을 우선적으로 탐색하는 알고리즘 노드와 간선으로 표현되며.. 2024. 2. 18.
[프로그래머스] 완전탐색 - 모음사전 나의 답 from itertools import product def solution(word): wordList = [] answer = ['A', 'E', 'I', 'O', 'U'] for i in range (1,6,1): for j in list(product(answer, repeat=i)): wordList.append(j) wordList.sort() for index, value in enumerate(wordList): if word == ''.join(value): return index+1 return word product를 이용해서,,,, 풀어보았다. 길이가 1개일 때, 2개일 때, ***, 5개일 때의 모든 경우의 수를 모아두고, 정렬시키면, 문자열 순서대로 나온다는 것... 그.. 2024. 2. 16.
[프로그래머스] 완전 탐색 - 소수 찾기 나의 답 import itertools def prime(n): # 소수 판별 함수 if n==1 or n==0: return False for i in range (2, n): if n%i==0: return False return True def solution(numbers): dic = {} for i in range (1, len(numbers)+1): listA = list(itertools.permutations(numbers, i)) #글자가 n(1~numbers의 길이)개일 때 순열 생성 for a in listA: n = ''.join(list(a)) #문자인 숫자 조합을 문자열로 바꿈 if prime(int(n)): #문자열을 숫자로 바꿔, 소수인지 판별 dic[int(n)]=1 # .. 2024. 2. 12.
[프로그래머스] 완전 탐색 - 모의고사 내 답 def solution(answers): answer = [] first = [1, 2, 3, 4, 5] second = [2, 1, 2, 3, 2, 4, 2, 5] third = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5] f_len = len(first) s_len = len(second) t_len = len(third) f_cnt = 0 s_cnt = 0 t_cnt = 0 for index, value in enumerate(answers): f = first[index%f_len] s = second[index%s_len] t = third[index%t_len] if f == value: f_cnt+=1 if s == value: s_cnt+=1 if t == value: t.. 2024. 2. 3.