목록Computer Science (228)
DHistory
문제 10814번: 나이순 정렬 온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을 www.acmicpc.net 풀이 import sys n = int(sys.stdin.readline().rstrip()) people = [] for i in range(n): age, name = sys.stdin.readline().rstrip().split() people.append([int(age), name, i]) def solution(people): return sorted(people, key=lambda x: (x[0], x[2])) for age, name, _ in ..
문제 11650번: 좌표 정렬하기 첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다. www.acmicpc.net 풀이 import sys n = int(sys.stdin.readline().rstrip()) coordinates = [] for _ in range(n): x, y = map(int, sys.stdin.readline().rstrip().split()) coordinates.append((x, y)) def solution(coordinates): return sorted(coordinates, key..
문제 1181번: 단어 정렬 첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다. www.acmicpc.net 풀이 import sys n = int(sys.stdin.readline().rstrip()) text = [] for _ in range(n): text.append(sys.stdin.readline().rstrip()) def solution(text): return sorted(set(text), key=lambda x: (len(x), x)) print(*solution(text), sep='\n') 채점 결과
문제 2751번: 수 정렬하기 2 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. www.acmicpc.net 풀이 """ 주의사항) "절댓값"이 1,000,000보다 작거나 같은 정수 -1,000,000 ~ 1,000,000 """ import sys n = int(sys.stdin.readline().rstrip()) numbers = [0] * (2000001 + 1) for _ in range(n): number = int(sys.stdin.readline().rstrip()) numbers[number + 1000000] += 1 def solu..
문제
문제 27737번: 버섯 농장 첫 번째 줄에 $N$, $M$, $K$가 공백으로 구분되어 주어진다. 두 번째 줄부터 $N$개의 줄에 나무판의 각 칸의 상태가 공백으로 구분되어 주어진다. 버섯이 자랄 수 있는 칸은 0, 버섯이 자랄 수 없는 칸 www.acmicpc.net 풀이 """ N x N 칸으로 이루어진 나무판에서 버섯 농사 버섯이 "자랄 수 있는 칸"과 버섯이 "자랄 수 없는 칸"이 있다. M개의 버섯 포자를 가지고 있다. 버섯이 자랄 수 있는 칸에만 심을 수 있다. 포자가 심어진 칸을 포함해 최대 K개의 연결된 칸에 버섯을 자라게 한다. (상하좌우) 버섯 포자를 여러 개 겹쳐서 심을 수 있으며, x개의 버섯 포자를 겹쳐 심으면 포자가 심어진 칸을 포함해 최대 x * K개의 연결된 칸에 버섯이 자..
문제 1303번: 전쟁 - 전투 첫째 줄에는 전쟁터의 가로 크기 N, 세로 크기 M(1 ≤ N, M ≤ 100)이 주어진다. 그 다음 두 번째 줄에서 M+1번째 줄에는 각각 (X, Y)에 있는 병사들의 옷색이 띄어쓰기 없이 주어진다. 모든 자리에는 www.acmicpc.net 풀이 """ 우리 병사: 흰색 옷 적국의 병사: 파란색 옷 같은 팀 병사들은 모이면 모일수록 강해진다. N명이 뭉쳐있을 때는 N^2의 위력을 낼 수 있다. 누가 승리할 것인가? 상하좌우로 뭉쳐있는 경우만 생각한다. 81 + 49 = 130 1 + 64 = 65 """ import sys from collections import deque m, n = map(int, sys.stdin.readline().rstrip().split(..
문제 1743번: 음식물 피하기 첫째 줄에 통로의 세로 길이 N(1 ≤ N ≤ 100)과 가로 길이 M(1 ≤ M ≤ 100) 그리고 음식물 쓰레기의 개수 K(1 ≤ K ≤ N×M)이 주어진다. 그리고 다음 K개의 줄에 음식물이 떨어진 좌표 (r, c)가 주어진다 www.acmicpc.net 풀이 """ 세로 길이: N 가로 길이: M 음식물 쓰레기의 개수: K 움식물이 떨어진 좌표: R, C """ import sys from collections import deque n, m, k = map(int, sys.stdin.readline().rstrip().split()) graphs = [[0 for _ in range(m + 1)] for _ in range(n + 1)] for _ in range..
문제 1926번: 그림 어떤 큰 도화지에 그림이 그려져 있을 때, 그 그림의 개수와, 그 그림 중 넓이가 가장 넓은 것의 넓이를 출력하여라. 단, 그림이라는 것은 1로 연결된 것을 한 그림이라고 정의하자. 가로나 세로 www.acmicpc.net 풀이 """ 그림의 개수와 그림 중 넓이가 가장 넓은 것의 넓이 출력 1로 연결된 것을 한 그림이라고 정의 가로나 세로로 연결된 된 것이 그림 그림의 넓이란 그림에 포함된 1의 개수 """ import sys from collections import deque n, m = map(int, sys.stdin.readline().rstrip().split()) maps = [] for _ in range(n): maps.append(list(map(int, sys..
문제 2468번: 안전 영역 재난방재청에서는 많은 비가 내리는 장마철에 대비해서 다음과 같은 일을 계획하고 있다. 먼저 어떤 지역의 높이 정보를 파악한다. 그 다음에 그 지역에 많은 비가 내렸을 때 물에 잠기지 않는 www.acmicpc.net 풀이 """ 어떤 지역의 높이 정보를 파악한다. 그 지역에 많은 비가 내렸을 때 물에 잠기지 않는 안전한 영역이 최대로 몇 개가 만들어 지는 지를 조사한다. 비의 양에 따라 일정한 높이 이하의 모든 지점은 물에 잠긴다고 가정한다. N=5 5 6 8 2 6 2 3 2 3 4 6 6 7 3 3 2 7 2 5 3 6 8 9 5 2 7 4 이하인 모든 지점이 물에 잠겼다. 안전한 영역: 물에 잠기지 않는 지점들이 위,아래,오른쪽,왼쪽으로 인접. 그 크기가 최대인 영역 (..