목록 code review/study (31)
KEEP GOING
https://www.acmicpc.net/problem/1783 1783번: 병든 나이트 첫째 줄에 체스판의 세로 길이 N와 가로 길이 M이 주어진다. N과 M은 2,000,000,000보다 작거나 같은 자연수이다. www.acmicpc.net n, m = map(int, input().split()) if n == 1: print(1) elif n == 2: print(min(4, (m+1)//2)) else: if m < 7: print(min(4, m)) else: print(m-2) 힌트) 행을 기준으로 조건을 나눈다. ex. 행이 1일때, 2일때, 2 이상일때... 코드는 간단하나 이해하는데 어려움이 많았던 풀이 n = 1인 경우 이런 상태이기 때문에 나이트는 어느 방향으로도 움직이지 못한다...
https://www.acmicpc.net/problem/1753 1753번: 최단경로 첫째 줄에 정점의 개수 V와 간선의 개수 E가 주어진다. (1 ≤ V ≤ 20,000, 1 ≤ E ≤ 300,000) 모든 정점에는 1부터 V까지 번호가 매겨져 있다고 가정한다. 둘째 줄에는 시작 정점의 번호 K(1 ≤ K ≤ V)가 www.acmicpc.net import heapq V, E = map(int, input().split()) k = int(input()) graph = [[] for _ in range(V+1)] distance = [1e9 for _ in range(V+1)] for _ in range(E): u, v, w = map(int, input().split()) graph[u].appen..
https://www.acmicpc.net/problem/1022 1022번: 소용돌이 예쁘게 출력하기 첫째 줄에 네 정수 r1, c1, r2, c2가 주어진다. www.acmicpc.net dx = [1,0,-1,0] dy = [0,1,0,-1] r1, c1, r2, c2 = map(int, input().split()) board = [[0]*(c2-c1+1) for _ in range(r2-r1+1)] num_of_board = (c2-c1+1)*(r2-r1+1) y = x = 0 # 0,0 부터 시작 num = 1 # board에 적힐 값 cnt = 0 d_cnt = 1 d = 0 while num_of_board > 0: # 범위 내에 존재할 수 있는 x, y 인 경우 if r1
참고) cs 면접 대비와 알고리즘 자료구조를 잘 정리해둔 블로그가 있어 소개합니다 ㅎㅎ https://gyoogle.dev/blog/algorithm/Dynamic%20Programming.html 동적 계획법(Dynamic Programming) | 👨🏻💻 Tech Interview 동적 계획법(Dynamic Programming) 복잡한 문제를 간단한 여러 개의 문제로 나누어 푸는 방법 흔히 말하는 DP가 바로 '동적 계획법' 한 가지 문제에 대해서, 단 한 번만 풀도록 만들어주는 알고리즘이다 gyoogle.dev 파일합치기 문제 풀이 방법 https://www.youtube.com/watch?v=4OdIDIYLHlY https://www.acmicpc.net/problem/11066 11066번:..
[암호만들기] https://www.acmicpc.net/problem/1759 1759번: 암호 만들기 첫째 줄에 두 정수 L, C가 주어진다. (3 ≤ L ≤ C ≤ 15) 다음 줄에는 C개의 문자들이 공백으로 구분되어 주어진다. 주어지는 문자들은 알파벳 소문자이며, 중복되는 것은 없다. www.acmicpc.net [bruteforce] from itertools import combinations l, c = map(int, input().split()) words = sorted(input().split()) for comb in list(combinations(words, l)): v, e = 0, 0 for word in comb: if word in ['a', 'e', 'i', 'o', '..
https://www.acmicpc.net/problem/10816 10816번: 숫자 카드 2 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10, www.acmicpc.net [dictionary, 이진탐색 사용] 이미 카운트했던 카드를 처리해주지 않아서 처음에 시간 초과가 발생했었다. n = int(input()) cards = sorted((map(int, input().split()))) m = int(input()) targets = list(map(int, input().split())) result = [] # 처음에 등장하..
[계단 오르기] (중하) https://www.acmicpc.net/problem/2579 2579번: 계단 오르기 계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. 과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점 www.acmicpc.net n = int(input()) stairs = [int(input()) for _ in range(n)] # dp[x] : x 번째 계단까지 이동했을 때의 최대 점수 dp = [0]*(n+1) def dynamic(): dp[0] = stairs[0] dp[1] = stairs[0] + stairs[1] for i in range(2, n): # i-2번째에서 i번째 계단을 밟는 경우..
[회의실 배정] (하) https://www.acmicpc.net/problem/1931 1931번: 회의실 배정 (1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다. www.acmicpc.net 1. 큐 사용 from collections import deque n = int(input()) time = [list(map(int, input().split())) for _ in range(n)] # 종료 시간, 종료 시간이 같다면 시작 시간순으로 정렬 time.sort(key=lambda x:(x[1], x[0])) deq = deque(time) start, end = deq.popleft() count = 1 while deq: next_start, next_end = deq...