Python
-
[백준] 1700번 멀티탭 스케줄링 (by Python)Programming/Algorithm 2021. 2. 7. 17:55
문제 보자마자 운영체제가 생각났던 문제. 실제 운영체제에서는 이렇게 앞으로 어떤 프로세스들이 들어올지 모르기에 최적의 알고리즘을 수행할 수는 없지만, 만약 안다면 이런 식으로 알고리즘을 운영할 수 있다고 배운 것이 어렴풋이 기억이 났다. 앞으로 사용하지 않을 것을 최우선으로 빼고, 가장 나중에 사용할 것은 차선으로 빼는 것. 풀이 from copy import deepcopy n, k = map(int, input().split()) arr = list(map(int, input().split())) now = [] answer = 0 temp = -1 for idx, item in enumerate(arr): if item not in now: if len(now) < n: now.append(item..
-
[백준] 1707번 이분 그래프 (by Python)Programming/Algorithm 2021. 2. 6. 00:39
문제 처음에 이분 그래프의 정확한 의미를 모르겠어서 조금 헤맸지만 결국 핵심은 각 노드가 인접한 노드들과 다른 색깔을 가지고 있으면서, 총 2가지 색깔로 다 표현할 수 있는 그래프 라고 생각하면 될 것 같다. 이전의 연결 요소의 개수를 찾는 문제에서 BFS 방법보다 DFS 방법이 더 시간이 낮게 나오는 것을 확인하고 DFS로 들이댔지만 풀고 나니 BFS로 푸는 것이 더 나은 문제였다는 생각이 들어 BFS로도 풀어봤다. 그리고 DFS로 풀려면 sys.setrecursionlimit()을 일단 크게 줘야겠다는 교훈을 얻게 된 문제! 첫 번째 풀이 (by DFS) import sys input = sys.stdin.readline sys.setrecursionlimit(100000) k = int(input(..
-
[백준] 10972번 다음 순열 (by Python)Programming/Algorithm 2021. 1. 27. 16:54
문제 언뜻 보면 단순한 문제이지만, 내게는 그리 단순하지 않았다. 순열이 나열되는 순서를 논리적으로 표현하는 것에서 어려움을 겪었기 때문이다. 그렇기 때문에 처음에는 permutations 라이브러리를 사용해서 단순하게 해결하려고 시도를 했다. 첫 번째 풀이 from itertools import permutations n = int(input()) target = list(map(int, input().split())) array = list(map(list, permutations(range(1, n + 1)))) answer = array.index(target) if answer == len(array) - 1: print(-1) else: for i in array[answer + 1]: pri..