Algorithm
-
[백준] 9019번 DSLR (by Python)Programming/Algorithm 2021. 1. 29. 17:29
문제 다른 것을 하다가 싫증이 나서 가볍게 머리도 풀 겸 고른 BFS 문제인데, 나에게 또다른 시련을 안겨줄 줄은 몰랐다. 논리적으로 풀기 어려운 문제는 아니었으나, 구현하는 내가 자잘한 실수를 발견하지 못한 탓에 성공까지 시간이 좀 걸렸다. PS는 논리력만큼이나 꼼꼼함도 중요하다는 것을 되새기게 된 문제이다. 풀이 from collections import deque import sys def check(x, char): global parents global q global b global a global temp if parents[x][0] == -1: parents[x][0] = temp parents[x][1] = char q.append(x) if b == x: answer = '' whil..
-
[백준] 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..
-
[백준] 14500번 테트로미노 (by Python)Programming/Algorithm 2021. 1. 26. 12:07
문제 문제를 읽으면 바로 모든 경우의 수를 시도해보는 브루트 포스 방식으로 풀어야 함을 알 수 있다. 그렇지만 고민이 되는 부분은 어떻게? 인 것 같다. 어떻게 회전도, 뒤집기도 가능한 테트로미노의 모양을 모두 테스트해볼 수 있을까? 더 나은 방법이 있을 거란 생각이 들었지만 일단 내가 시도해본 방법은 다음과 같다. 첫 번째 풀이 n, m = map(int, input().split()) array = [] answer = 0 shapes = [[(0, 0), (0, 1), (1, 0), (1, 1)], [(0, 0), (0, 1), (0, 2), (0, 3)], [(0, 0), (1, 0), (2, 0), (3, 0)], [(0, 0), (1, 0), (1, 1), (2, 1)], [(0, 0), (1..