재귀
[python3] 백준 1991 (트리 순회, 트리, 재귀)
이번 문제는 순회 문제이다. 처음에는 트리를 어떻게 푸는지 몰라서 헤맸는데 어제 영상을 봤더니 쉽게 이해가 갔다. https://www.youtube.com/watch?v=QN1rZYX6QaA 정리하자면 pre order = root, left, right 순서 in order = left, root, right 순서 post order = left, right, root 순서 따라서 순서만 기억해도 나중에 쉽게 떠올릴 수 있다. 이걸 토대로 문제를 풀면 아래와 같다. adj = {} N = int(input()) for i in range(N): A, B, C = input().split() if A not in adj: adj[A] = [B, C] # 전위 순회 [root, left, right] d..
[python] 코테 대비 알고리즘 모듈 정리
정렬 arr = [(1,2),(2,3), (1,1)] arr.sort() # 일반적으로 처음인자부터 차례로 정렬 nlogn arr.sort(key=lambda x:x[1],x[0]) # 두번째 인자 우선순위로 정렬 arr.sort(key=lambda x:x[0], reverse=True) # 첫번째 인자 기준으로 반대로 정렬 곱집합, 조합, 순열 from itertools import product product([1,2,3],['a','b','c','d']) # 하나씩 선택하는 모든 케이스(곱집합)가 만들어진다. from itertools import combinations combinations(iterable, r=None) # 조합 구하기 from itertools import permutatio..
백준 2630 풀이 (색종이 만들기, 쿼드트리, 분할정복, 파이썬)
이 문제는 크게 어렵지는 않았다. 예전에 재귀를 처음 다뤘을때가 생각이 났다. 약 한달전이었지 그때 정말 재귀가 너무 어려워서 마치 재귀란 도대체 왜 이렇게 어려운지 마귀의 친구인가 했던..... 여튼 문제는 간단하다. 종이가 있는데 이 종이를 4분면씩 잘라서 전부 1이나 0이면 카운트를 하나씩 증가 시켜서 1종이, 0종이의 개수를 구하면 되는 것이다. 그럼 생각해보자. 우선 전부 통일된 숫자인지 파악해야한다. 만약 통일되지 않으면 4분면으로 잘라서 전부 통일된 숫자인지 파악해야한다. 만약 통일되지 않으면 4분면으로 잘라서 통일된 숫자인지 파악해야한다. 만약 통일되지 않으면 4분면.......딱 봐도 재귀다. 그래서 재귀함수를 대충 짜주면 된다. 이번에 귀찮았던것은 numpy를 쓰지 않고 4분면으로 자르..