본문 바로가기

BOJ 알고리즘 (패캠)

(52)
11650번: 좌표 정렬하기 (정렬) - Fastcampus www.acmicpc.net/problem/11650 11650번: 좌표 정렬하기 첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다. www.acmicpc.net import sys def sort(a): return sorted(a, key=lambda x: (x[0], x[1])) # 정렬 N = int(input()) nums = [tuple(map(int, sys.stdin.readline().split())) for _ in range(N)] ans = sort(nums) [print(x, y) for x, ..
10814번: 나이순 정렬 (정렬) - Fastcampus www.acmicpc.net/problem/10814 10814번: 나이순 정렬 온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을 � www.acmicpc.net import sys def sort(a): return sorted(a, key=lambda x: x[0]) # 정렬 N = int(input()) members = [] for _ in range(N): age, name = sys.stdin.readline().split() members.append((int(age), name)) ans = sort(members) [print(age, name) for a..
1427번: 소트 인사이드 (정렬) - Fastcampus www.acmicpc.net/problem/1427 1427번: 소트인사이드 첫째 줄에 정렬하고자하는 수 N이 주어진다. N은 1,000,000,000보다 작거나 같은 자연수이다. www.acmicpc.net def sort(a): return sorted(a, reverse=True) # 정렬 def sort(a): res = [] for i in range(9, -1, -1): for j in a: if j == i: res.append(i) return res a = list(map(int, input())) ans = sort(a) print("".join(map(str, ans)))
2750번: 수 정렬하기 (정렬) - Fastcampus www.acmicpc.net/problem/2750 2750번: 수 정렬하기 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. www.acmicpc.net def sort(a): return sorted(a) # 정렬 N = int(input()) nums = [int(input()) for _ in range(N)] res = sort(nums) print("\n".join(map(str, res)))
4195번: 친구 네트워크 (구현, 해시, dict, 분리집합) - Fastcampus 집합을 부모테이블 (Union-Find 알고리즘)으로 표현할 수 있다 www.acmicpc.net/problem/4195 4195번: 친구 네트워크 첫째 줄에 테스트 케이스의 개수가 주어진다. 각 테스트 케이스의 첫째 줄에는 친구 관계의 수 F가 주어지며, 이 값은 100,000을 넘지 않는다. 다음 F개의 줄에는 친구 관계가 생긴 순서대로 주어진 www.acmicpc.net def find(x): if parent[x] != x: parent[x] = find(parent[x]) return parent[x] def union(x, y): rx = find(x) ry = find(y) if rx != ry: parent[ry] = rx count[rx] += count[ry] # 입력: [('Fred'..
1920번: 수 찾기 (구현, 해시, set) - Fastcampus www.acmicpc.net/problem/1920 1920번: 수 찾기 첫째 줄에 자연수 N(1≤N≤100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1≤M≤100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들이 A안�� www.acmicpc.net def run(s, nums): res = [] for x in nums: if x in s: res.append(1) else: res.append(0) return res N = int(input()) s = set(map(int, input().split())) # set M = int(input()) nums = list(map(int, input().spli..
10930번: SHA-256 (구현, 해시, hashlib) - Fastcampus www.acmicpc.net/problem/10930 10930번: SHA-256 첫째 줄에 문자열 S가 주어진다. S는 알파벳 대문자와 소문자, 그리고 숫자로만 이루어져 있으며, 길이는 최대 50이다. www.acmicpc.net import hashlib s = input() encoded = s.encode() hashed = hashlib.sha256(encoded).hexdigest() print(hashed)
5397번: 키로거 (구현, 스택) - Fastcampus www.acmicpc.net/problem/5397 5397번: 키로거 첫째 줄에 테스트 케이스의 개수가 주어진다. 각 테스트 케이스는 한줄로 이루어져 있고, 강산이가 입력한 순서대로 길이가 L인 문자열이 주어진다. (1 ≤ L의 길이 ≤ 1,000,000) 강산이가 백스페이 www.acmicpc.net # 배열로 풀면 시간초과 (배열의 insert 연산 때문에) def run(string): pwd = [] idx = 0 # 커서의 위치 for ch in string: if ch == "": idx = min(len(pwd), idx + 1) elif ch == "-": if pwd: pwd.pop() idx -= 1 else: pwd.insert(idx, ch) idx += 1 return pwd #..