본문 바로가기

알고리즘 문제풀이/프로그래머스3

3. 체육복 카테고리: 그리디 레벨: 1 소요시간: 30분 사용언어: python # 0. 먼저 reserve lost를 sort해준다 # 1. for문을 돌려서 reserve 앞 뒤 lost 확인 # 2. reserve 앞 뒤 둘다 있을땐 앞을 채워준다. # 3. 겹치는 경우를 서로 제외해주고 n - len(lost)를 answer로 def solution(n, lost, reserve): temp = [0 for ii in range(n+2)] lost.sort() reserve.sort() for ii in lost: if ii in reserve: continue else: temp[ii] = 1 for ii in reserve: if ii in lost: continue else: if temp[ii-1] .. 2023. 4. 8.
2.모음사전 카테고리: 완전탐색 레벨:2 소요시간: 35분 def rule(cnt,temp): for ii in range(5): if temp[ii] == 0: temp[ii] = 1 cnt+=1 return cnt for ii in range(4,-1,-1): if temp[ii] == 5: temp[ii] = 0 continue else: temp[ii] +=1 cnt+=1 return cnt def find_result(temp,sol_list): cnt = 0 while True: print(temp) if temp == sol_list: break else: cnt = rule(cnt,temp) return cnt # -sol 찾는 방식- # 1.법칙 말고 직접 로직 찾기 # 2.while 돌려서 맞는 것.. 2023. 4. 8.
1. 전력망을 둘로 나누기 카테고리: 완전탐색 레벨:2 소요시간: 30분 from collections import deque def bfs(ii,temp,temp_list,Q): cnt = 0 Q.append(ii) while Q: num = Q.pop() for i in temp[num]: if temp_list[i] == 1: continue else: cnt+=1 temp_list[i] = 1 Q.append(i) return cnt # 1.temp리스트에 0,1로 마킹 # 2.for문을 돌려서 갔던곳이면 back # 3.안간 곳이면 go # 4.갈때마다 cnt+=1하기 # 1. temp에 숫자별로 seq_list 설정 # 2. 이중 for문을 통해 짤라보기 # 3. 자른 번호를 기준으로 bfs로 차 구하기 # 4. min.. 2023. 4. 7.