# 답 from collections import deque import sys input = sys.stdin.readline N, M = map(int, input().split()) board = [input() for _ in range(N)] chk = [[set() for _ in range(M)] for _ in range(N)] ans = 1 dy = (1, -1, 0, 0) dx = (0, 0, 1, -1) def is_valid_coord(y, x): return 0
# 답 from collections import deque N, M = map(int, input().split()) board = [input() for _ in range(N)] chk = [[False] * M for _ in range(N)] dy = (0, 1, 0, -1) dx = (-1, 0, 1, 0) def is_valid_coord(y, x): return 0
그래프 구성 - 정점 (Vertex 또는 Node) - 간선 (Edge) 그래프의 연결 요소 Connected Component - 서로 완전히 분리된 요소들을 '연결 요소'라고 합니다. - 위 그림은 각각의 그래프 2개가 아닌, 연결 요소 2개로 이뤄진 그래프 1개 입니다. 그래프의 분류 1. 그래프의 방향성 방향 그래프 방향이 정해져 있음 무방향 그래프 어느 방향으로 가도 상관 없음 (양방향 그래프) 2. 그래프의 순환성 순환 그래프 순환하는 부분이 한 군데만 있어도 순환 그래프 비순환 그래프 순환하는 부분이 전혀 없음 * DAG (Directed Acycilc Graph) : 방향성 비순환 그래프 * 트리 (Tree) : 무방향 비순환 그래프 더보기 ※ 트리 Tree - 위와 같은 모양을 한 그래프..
# 원리 종료 시간이 제일 빠른 회의부터 차례대로 고르면 됩니다. 만일 종료 시간이 동일한 회의가 여러 개라면, 그 중 아무거나 골라도 됩니다. 종료 시간이 동일하다면 회의 시간이 필연적으로 겹치기 때문입니다. 단, 종료 시간과 시작 시간이 동일한(회의 시간이 0인) 회의는 예외입니다. 예를 들어 시작 시간과 종료 시간이 아래와 같은 회의 4개가 있다고 가정해봅시다. 회의 시작 시간 종료 시간 A 7 10 B 8 10 C 9 10 D 10 10 종료 시간이 동일한 회의 A, B, C 중에서는 그 어느 회의를 골라도 상관이 없습니다. 회의 D 또한 회의 A, B, C와 종료 시간이 동일하지만, D는 시작 시간과 종료 시간이 동일하기 때문에 예외로 생각해야합니다. 회의 A, B, C 중 하나가 끝나고 나면 ..
예를 들어, 튜플을 원소로 갖는 리스트를 sorted()로 정렬을 하게 되면 기본적으로 첫 번째 요소를 기준으로 정렬합니다. 만일 첫 번째 요소가 똑같은 값이 여러 개 있다면 자동으로 두 번째 요소를 기준으로 정렬합니다. 만일 두 번째 요소를 기준으로 먼저 정렬한 후, 첫 번째 요소를 정렬하고 싶다던가 등 정렬 조건을 바꾸고 싶다면 어떻게 해야 할까요? 아래 리스트 L을 다양한 방법으로 정렬해보겠습니다. L = [(4,0), (4,3), (4,2), (3,2), (2,1), (1,0)] 1. 인자 없이 sorted() 사용하기 - 첫 번째 요소를 기준으로 정렬합니다. - 첫 번째 요소가 같으면 두 번째 요소로 비교합니다. ex1 = sorted(L) print(ex1) # [(1, 0), (2, 1), ..