백준 14501 퇴사 (파이썬)
2022. 10. 8. 16:57
백준
풀이 및 해설 import sys sys.setrecursionlimit(10**6) # index = 현재 일정, profit = 현재까지의 수익 def solve(index, profit): global rst # index가 초과하면 rst를 갱신 if index >= N: rst = max(rst, profit) return # 상담 소요일 now_num = meeting[index][0] # 상담 수익 now_profit = meeting[index][1] # 현재 상담을 안하고 다음날로 넘어가기 solve(index+1, profit) # index에러 방지 == 상담 할 수 있는 경우 if now_num + index
백준 7562 나이트의 이동 (파이썬)
2022. 10. 3. 18:55
백준
풀이 및 해설(주석) import sys from collections import deque # sys.stdin = open('S1_7562_나이트의 이동.txt', 'r') sys.setrecursionlimit(10**6) # 나이트가 갈 수 있는 방향 dr = [-1, -2, -2, -1, 1, 2, 2, 1] dc = [-2, -1, 1, 2, 2, 1, -1, -2] def solve(r, c, er, ec): global cnt, visit, Q, record # 현재 위치 방문 체크 visit.add((r, c)) Q.append((r, c)) while Q: r, c = Q.popleft() # 목표 위치에 도달하면 적어뒀던 거리를 반환하고 함수 종료 if r == er and c ==..
백준 1941 소문난 칠공주 (파이썬)
2022. 9. 30. 13:37
백준
풀이 및 해설(주석) import sys # sys.stdin = open('칠공주.txt', 'r') sys.setrecursionlimit(10**6) # dfs와 bfs가 섞여서 사용됨 def solve(nums, S, Y): global rst, visit if Y > 3: return # 중복 방지를 위해 7개의 글자의 좌표를 정렬해서 튜플로 묶어서 visit이란 set에 저장 if len(nums) == 7: nums = tuple(sorted(nums)) if nums not in visit: rst += 1 visit.add(nums) return return # 여기서 부터가 bfs섞인 부분, nums에 넣어준 좌표들을 pop하면 안됨 그냥 읽으면 됨 for num in nums: r, ..
백준 1697 숨바꼭질 (파이썬)
2022. 9. 28. 21:19
백준
아이디어 바로 전에 올렸던 swea의 연산 문제와 완전 똑같다. https://ryuwc.tistory.com/112 SWEA 5247 연산 (그래프) (파이썬) https://swexpertacademy.com/main/learn/course/lectureProblemViewer.do SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 풀이 및 해설(주석).. ryuwc.tistory.com 위의 문제를 참고해주세요 풀이 및 해설(주석) from collections import deque def solve(num): global rst Q = deque() # Q에 현재 숫자와 움직임의 숫자를 넣어준다. 현재는..
백준 1654 랜선 자르기 (이진 탐색) (파이썬)
2022. 9. 25. 18:43
백준
풀이 및 해설(주석) import sys def solve(start, end): # 탈출 조건 if end - start = N return solve(mid, end) K, N = map(int, sys.stdin.readline().strip(' ').split()) cable = [int(sys.stdin.readline().strip(' ')) for _ in range(K)] max_cable = max(cable) print(solve(1, max_cable+1))
백준 2108 통계학 Counter 사용 (파이썬)
2022. 9. 25. 17:36
백준
아이디어 최빈값 구하는게 중요할 것 같다. 각 숫자의 개수를 구하기 위해 Counter 를 사용해야 겠다는 생각이 들었다. 풀이 from collections import Counter from heapq import nsmallest N = int(input()) nums = [] for _ in range(N): nums.append(int(input())) print(round(sum(nums)/N)) nums.sort() print(nums[N//2]) counter = Counter(nums) conut_num = counter.most_common() if len(conut_num) > 1: if conut_num[0][1] == conut_num[1][1]: print(conut_num[1]..
백준 10451 순열 사이클 (파이썬)
2022. 9. 25. 13:19
백준
풀이 및 해설(주석) import collections; import sys sys.setrecursionlimit(10**6) for tc in range(int(input())): N = int(input()) nums = list(map(int, input().split())) graph = collections.defaultdict(list) # graph에 간선의 정보를 넣어줌 for i in range(1, N+1): graph[i].append(nums[i-1]) # traced 는 현재의 진행 상황, 간선을 타고 가다 traced안에 있으면 result를 1증가 traced = set() # visit은 중복처리 방지용, 후위 순회로 정점을 순회한 뒤 return할 때 증가 visited ..
백준 1182 부분수열의 합 (파이썬)
2022. 9. 24. 22:57
백준
아이디어 재귀를 이용해 모든 부분 수열을 만들고 S가 되는 집합을 찾자 풀이 및 해설(주석) N, S = map(int, input().split()) arr = list(map(int, input().split())) result = [] # dfs를 사용하여 모든 부분 수열을 만들어서 result에 저장 def dfs(index, path): global result result.append(path) for i in range(index, N): dfs(i+1, path+[arr[i]]) dfs(0, []) ans = 0 for i in range(len(result)): # 부분 수열이 []으로 빈 리스트도 포함되어서 sum([])은 0이 되어버림 그래서 조건 추가 if len(result[i])..