목록전체 글 (108)
1seul357
def Find(x): if P[x] != x: P[x] = Find(P[x]) return P[x] def Union(a, b): Pa = Find(a) Pb = Find(b) P[Pb] = Pa T = int(input()) for TC in range(T): N, M = map(int, input().split()) P = [i for i in range(N+1)] arr = list(map(int, input().split())) ans = 0 q = [] for i in range(0, len(arr), 2): if Find(arr[i]) == Find(arr[i+1]): continue Union(arr[i], arr[i+1]) for i in range(1, N + 1): if i == P[..
T = int(input()) for TC in range(T): N, M = map(int, input().split()) A = list(map(int, input().split())) B = list(map(int, input().split())) count = 0 A.sort() for i in range(M): # B의 크기(M)만큼 반복 tmp = B[i] l = 0 # l의 초기값 설정 r = len(A) - 1 # r의 초기값 설정 mid = (l + r) // 2 # 중간값 설정 flag = -1 # 왼쪽, 오른쪽 번갈아가면서 탐색하는지 확인하는 flag 초기화 while l A[mid] and flag != 1: # 중간보다 크고, 바로 전에 오른쪽 체크한게 아니라면 l = mid + ..
T = int(input()) for TC in range(T): N, E = map(int, input().split()) check = [999999]*(N+1) arr = [[0]*(N+1) for _ in range(N+1)] check[0] = 0 # 출발점은 항상 0 for i in range(E): # E만큼 입력받기 s, e, w = map(int, input().split()) arr[s][e] = w # 2차원 리스트 사용, w비용 넣기 for i in range(N+1): for j in range(N+1): if arr[i][j] != 0: # 경로가 있다면 if check[j] > arr[i][j] + check[i]: # 지금 경로가 다음 경로에 저장된 값보다 작다면 check[..
''' 1. 열에서 가장 많이 나온 문자 찾기(counts[idx][1] += 1) 2. 가장 많이 나온 문자 = Hamming Distance를 최소로 만들 수 있음 3. Hamming Distance += N-max_cnt ''' N, M = map(int, input().split()) arr = [list(map(str, list(input()))) for _ in range(N)] result = 0 # Hamming Distance answer = '' # DNA 만들 변수 ans = 'Z' for i in range(M): counts = [['T', 0], ['A', 0], ['G', 0], ['C', 0]] # 열 바뀔때마다 값 초기화 for j in range(N): if arr[j][..