목록algorithm/baekjoon (96)
하루일문
문제 10814번: 나이순 정렬 온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을 www.acmicpc.net 풀이 import sys input = sys.stdin.readline n = int(input()) li = [] for _ in range(n): age, name = input().split() li.append((int(age), name)) li.sort(key= lambda x: x[0]) for _ in li: print(*_) 해설 두 수를 받아 튜블로 묶고, 람다로 정렬하여 하나씩 프린트했다.
문제 1926번: 그림 어떤 큰 도화지에 그림이 그려져 있을 때, 그 그림의 개수와, 그 그림 중 넓이가 가장 넓은 것의 넓이를 출력하여라. 단, 그림이라는 것은 1로 연결된 것을 한 그림이라고 정의하자. 가로나 세로 www.acmicpc.net 풀이 DFS # 방향으로 움직일 리스트 dx = [1, -1, 0, 0] dy = [0, 0, 1, -1] big = 0 def dfs(graph, x, y, visited): global big, c # 큰 값을 구해줘 big = max(big, visited[x][y]) # 빠지지 않고 계속 움직이면 돌아가더라도 숫자를 유지시켜줘 c += 1 for i in range(4): nx = x + dx[i] ny = y + dy[i] if 0
문제 https://www.acmicpc.net/problem/11651 11651번: 좌표 정렬하기 2 첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다. www.acmicpc.net 풀이 import sys input = sys.stdin.readline n = int(input()) n_li = [] for _ in range(n): a, b = map(int, input().split()) n_li.append((a, b)) # 오름차순으로 정렬해줘, 키로 람다를 하용해서 기준인 x는 1번 후 0번 순서야 n_..
문제 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의 오름차 순서대로 정렬한다.
풀이 # 시간 + 런타임 에러(재귀함수 늘리기) 발생을 막기 위해 sys 사용 필수 import sys sys.setrecursionlimit(10**6) input = sys.stdin.readline # dfs 풀이 def dfs(grap, num, visit): visit[num] = True for i in grap[num]: if not visit[i]: dfs(grap, i, visit) # bfs 풀이 from collections import deque def bfs(grap, num, visit): m = deque([num]) visit[num] = True while m: q = m.popleft() for i in grap[q]: if not visit[i]: visit[i] = T..
풀이 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..