목록백준 (73)
하루일문
문제 2644번: 촌수계산 사람들은 1, 2, 3, …, n (1 ≤ n ≤ 100)의 연속된 번호로 각각 표시된다. 입력 파일의 첫째 줄에는 전체 사람의 수 n이 주어지고, 둘째 줄에는 촌수를 계산해야 하는 서로 다른 두 사람의 번호가 주어 www.acmicpc.net 풀이 DSF def dsf(graph, n, visited): global cnt for j in graph[n]: if visited[j] == 0: visited[j] = visited[n] + 1 dsf(graph, j, visited) import sys input = sys.stdin.readline people = int(input()) graph = [[] for _ in range(people + 1)] visited = ..
풀이 import sys input = sys.stdin.readline N = int(input()) li = [] for _ in range(N): x, y = map(int, input().split()) li.append((x, y)) # 람다를 사용해서 x 먼져 x가 같다면 y로 가라 li_sorted = sorted(li, key = lambda x: (x[0], x[1])) for i in li_sorted: print(*i) 해석 x, y를 다 받고 x가 적은 부터 정렬한다. x가 같다면 y가 더 적은걸 먼저 정렬한다. labda를 사용한다. (x[0], : x의 오름차순 부터 정렬한다 x[1]) : x가 같은 때 y의 오름차 순서대로 정렬한다.
풀이 import sys a, b = map(int, sys.stdin.readline().split()) N = set() M = set() for _ in range(a): N.add(sys.stdin.readline().strip()) for _ in range(b): M.add(sys.stdin.readline().strip()) print(len((N & M)), *sorted(N & M), sep = "\n") 해설 교집합을 이용해서 푸는 문제라 set을 사용하였다. 집합에 대한 내용은 아래를 참고하자. 차집합
풀이 import sys a, b = map(int, sys.stdin.readline().split()) a_set= set(map(int, sys.stdin.readline().split())) b_set = set(map(int, sys.stdin.readline().split())) print(len(a_set - b_set)) print(*(sorted(a_set - b_set))) 참고 차집합된 수는 오름차순을 하지 않으면 틀린다 추가 사항 python에서 집합을 나타내는 법 집합은 set() 으로 풀이한다. set1 = set() set2 = set() 교집합 기호형set1 & set2 함수형set1.intersection(set2) 합집합 기호형set1 | set2 함수형set1.union..
풀이 import sys n = int(sys.stdin.readline()) book_li = [] for _ in range(n): book = sys.stdin.readline().strip() book_li.append(book) # 먼저 사전 순으로 정렬 book_li = sorted(book_li) from collections import Counter count = Counter(book_li).most_common() print(count[0][0]) most_common() = 튜플로 묶어 준다
import sys num = sys.stdin.readline().strip() num_dict ={} for n in num: if int(n) not in num_dict: num_dict[int(n)] = 1 else: num_dict[int(n)] += 1 for i in range(9, -1, -1): if i in num_dict: print(str(i) * num_dict[i], end = "")
풀이 import sys card_n = int(input()) card = list(map(int, sys.stdin.readline().split())) M = int(input()) s_g = list(map(int, sys.stdin.readline().split())) from collections import Counter count = Counter(card) for i in s_g: if i in count: print(count[i], end = " ") else: print(0, end = " ")
풀이 import sys sys.setrecursionlimit(10**6) # 파이썬은 재귀 깊이가 정해져있어서 의도적으로 늘려주어야 합니다. dx = [-1, -1, -1, 0, 0, 1, 1, 1] dy = [-1, 0, 1, -1, 1, -1, 0, 1] def dsf(graph, x, y, visit): # 8방향 반복 for _ in range(8): nx = x + dx[_] ny = y + dy[_] # 표 안에 들어가면서 안 드린곳 if 0