목록CodingTest (39)
모눈종이에 사각사각
🍎[백준 2212] 센서 문제링크 https://www.acmicpc.net/problem/2212 2212번: 센서 첫째 줄에 센서의 개수 N(1 ≤ N ≤ 10,000), 둘째 줄에 집중국의 개수 K(1 ≤ K ≤ 1000)가 주어진다. 셋째 줄에는 N개의 센서의 좌표가 한 개의 정수로 N개 주어진다. 각 좌표 사이에는 빈 칸이 하나 있 www.acmicpc.net ⚾ 코드 import sys input = sys.stdin.readline n = int(input()) k = int(input()) sensors = list(map(int, input().split())) sensors.sort() diff = [sensors[i]-sensors[i-1] for i in range(1, n)] di..
🍎[백준 5557] 1학년 문제링크 https://www.acmicpc.net/problem/5557 5557번: 1학년 상근이가 1학년 때, 덧셈, 뺄셈을 매우 좋아했다. 상근이는 숫자가 줄 지어있는 것을 보기만 하면, 마지막 두 숫자 사이에 '='을 넣고, 나머지 숫자 사이에는 '+' 또는 '-'를 넣어 등식을 만들며 놀 www.acmicpc.net ⚾ 코드 from collections import deque n = int(input()) numbers = list(map(int, input().split())) dp = [[0]*21 for _ in range(n-1)] dp[0][numbers[0]] = 1 for i in range(1, n-1): for j in range(21): if dp..
🍎[백준 9081] 단어 맞추기 문제링크 https://www.acmicpc.net/problem/9081 9081번: 단어 맞추기 입력의 첫 줄에는 테스트 케이스의 개수 T (1 ≤ T ≤ 10)가 주어진다. 각 테스트 케이스는 하나의 단어가 한 줄로 주어진다. 단어는 알파벳 A~Z 대문자로만 이루어지며 항상 공백이 없는 연속된 알 www.acmicpc.net ⚾ 코드 c = int(input()) def solution(s): k = -1 for i in range(len(s)-2, -1, -1): # 뒤에서 부터 돌면서, i가 i+1보다 작은 문자를 찾는다. if s[i] < s[i+1]: k = i break if k == -1: # 그러한 문자가 없다면, 원래 문자가 가장 큰 것. return ..
🍎[백준 16235] 나무 재테크 문제링크 https://www.acmicpc.net/problem/16235 16235번: 나무 재테크 부동산 투자로 억대의 돈을 번 상도는 최근 N×N 크기의 땅을 구매했다. 상도는 손쉬운 땅 관리를 위해 땅을 1×1 크기의 칸으로 나누어 놓았다. 각각의 칸은 (r, c)로 나타내며, r은 가장 위에서부터 www.acmicpc.net ⚾ 코드 import sys input = sys.stdin.readline n, m, k = map(int, input().split()) arr = [list(map(int, input().split())) for _ in range(n)] nutrients = [[5]*n for _ in range(n)] # 양분 저장 trees =..
백준16926을 풀다가 deque에 rotate 메서드가 존재한다는 사실을 알게 되었다. 🍀 deque.rotate(num) deque.rotate(num) -> deque를 num만큼 회전시킨다. num이 양수일 경우, 원소들은 오른쪽으로 이동한다. num이 음수일 경우, 원소들은 왼쪽으로 이동한다. 다음과 같은 deque가 있다고 해보자. from collections import deque q = deque([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]) rotate(2)를 해주면 양수이기 때문에 오른쪽으로 2칸 이동하게 될 것이다. q.rotate(2) 결과는 다음과 같다. [9, 10, 1, 2, 3, 4, 5, 6, 7, 8] 오른쪽으로 두 칸 이동한 것을 확인할 수 있다. 그렇다면..
백준 20056번 문제에 리스트가 연결되어 있을 경우가 전제되었다. 격자의 행과 열은 1번부터 N번까지 번호가 매겨져 있고, 1번 행은 N번과 연결되어 있고, 1번 열은 N번 열과 연결되어 있다. 이를 쉽게 구하는 방법은 다음과 같다. dx = [-1, -1, 0, 1, 1, 1, 0, -1] dy = [0, 1, 1, 1, 0, -1, -1, -1] nx, ny = (x+dx[d]*s)%N, (y+dy[d]*s)%N
🍎[백준 5547] 일루미네이션 문제링크 https://www.acmicpc.net/problem/5547 5547번: 일루미네이션 첫째 줄에 두 개의 정수 W와 H가 주어진다. (1 ≤ W, H ≤ 100) 다음 H줄에는 상근이네 집의 건물 배치가 주어진다. i+1줄에는 W개의 정수가 공백으로 구분되어 있다. j번째 (1 ≤ j ≤ w) 정수의 좌표는 www.acmicpc.net ⚾ 코드 import sys from collections import deque input = sys.stdin.readline m, n = map(int, input().split()) temp = [list(map(int, input().split())) for _ in range(n)] # 입력 받은 리스트의 위, 아래..
🍎[백준 15650] N과 M (2) 문제링크 https://www.acmicpc.net/problem/15650 15650번: N과 M (2) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net ⚾ 코드 # 조합 직접 구현 from itertools import combinations n, m = map(int, input().split()) cnt = m numbers = list(range(1, n+1)) # res = [] def combination(pre, now, m): if len(now) < m or m == 0: return..
🍎[백준 15649] N과 M (1) 문제링크 https://www.acmicpc.net/problem/15649 15649번: N과 M (1) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net ⚾ 코드 # 순열 직접 구현 n, m = map(int, input().split()) cnt = m numbers = list(range(1, n+1)) res = [] def permutation(pre, now, m): if len(now) < m or m == 0: return pre for i in range(len(now)): pre.ap..
🍎[백준 19637] 제목 문제링크 https://www.acmicpc.net/problem/19637 19637번: IF문 좀 대신 써줘 첫 번째 줄에는 칭호의 개수 N (1 ≤ N ≤ 105)과 칭호를 출력해야 하는 캐릭터들의 개수 M (1 ≤ M ≤ 105)이 빈칸을 사이에 두고 주어진다. (1 ≤ N, M ≤ 105) 두 번째 줄부터 N개의 줄에 각 칭 www.acmicpc.net ⚾ 코드 import sys input = sys.stdin.readline n, m = map(int, input().split()) tag = [] for _ in range(n): a, b = map(str, input().split()) tag.append((int(b), a)) users = [int(input..