목록Python (288)
홍우진의 개발새발
문제 링크https://www.acmicpc.net/problem/2503풀이 코드import sysinput = sys.stdin.readline# 질문과 결과를 저장할 리스트queries = []for _ in range(int(input())): num, s, b = map(int, input().split()) queries.append((str(num), s, b))cnt = 0# 백의 자리for i in range(1, 10): # 십의 자리 for j in range(1, 10): # 일의 자리 for k in range(1, 10): # 각 자릿수가 모두 다른지 확인 if i == j or j == k o..
문제 링크https://www.acmicpc.net/problem/2178풀이 코드from collections import deque# import sys# input = sys.stdin.readlinen, m = map(int, input().split())maze = [list(map(int, list(input().strip()))) for _ in range(n)]# 상, 하, 좌, 우 이동방향 정의dx = [-1, 1, 0, 0]dy = [0, 0, -1, 1]def bfs(start_x, start_y): queue = deque([(start_x, start_y)]) # 큐가 빌 때까지 반복 while queue: # 큐에서 하나의 원소를 뽑아 출력 ..
문제 링크https://www.acmicpc.net/problem/7795풀이 코드import sysT = int(sys.stdin.readline())for _ in range(T): N, M = map(int, sys.stdin.readline().split()) A = list(map(int, sys.stdin.readline().split())) B = list(map(int, sys.stdin.readline().split())) A.sort() B.sort() count = 0 b_idx = 0 for a_idx in range(N): while b_idx 코드 해석투포인터 방식을 사용한다.B[b_idx]가 A..
문제 링크https://www.acmicpc.net/problem/4134풀이 코드import sysinput = sys.stdin.readlinedef sosu(num): if num 코드 해석2부터 x의 제곱근(√x)까지만 나누어보면 x가 소수인지 아닌지 빠르게 확인 할 수 있다.이 방법을 사용하여 풀이하였다. 체감 난이도: ★☆☆☆☆
문제 링크https://www.acmicpc.net/problem/14495풀이 코드import sysn = int(sys.stdin.readline())dp = [0] * 117dp[1] = dp[2] = dp[3] = 1for i in range(4, n + 1): dp[i] = dp[i-1] + dp[i-3]print(dp[n])코드 해석dp를 사용해서 bottom-up 방식으로 해결했다. 체감 난이도: ☆☆☆☆☆점화식이 그대로 나와있어서 쉬웠다.
문제 링크https://www.acmicpc.net/problem/12789풀이 코드n = int(input())num = list(map(int, input().split()))gansik = 1wait = []while True: if num and num[0] == gansik: num.pop(0) gansik += 1 elif wait and wait[-1] == gansik: wait.pop() gansik += 1 elif num: wait.append(num.pop(0)) else: breakif not wait: print("Nice")else: print("Sad")코드 해석이름이 ..
문제 링크https://www.acmicpc.net/problem/13699풀이 코드import sysn = int(sys.stdin.readline())dp = [0] * (n + 1)dp[0] = 1for i in range(1, n + 1): for j in range(i): dp[i] += dp[j] * dp[i - 1 - j]print(dp[n])코드 해석나와있는 점화식 그대로 구현하면 되는 간단한 코드다.대신 DP와 이중 for문으로 구현하였다. 체감 난이도: ★☆☆☆☆
문제 링크https://www.acmicpc.net/problem/15624풀이 코드import sysn = int(sys.stdin.readline())if n == 0: print(0)elif n == 1: print(1)else: a, b = 0, 1 for _ in range(2, n + 1): a, b = b, (a + b) % 1000000007 print(b)코드 해석일반적인 DP 문제다.다만 함정이 있다.오버플로우를 방지하기 위해 결과를 출력하기 전에 딱 한 번만 나누는 것이 아니라덧셈을 할 때마다 계속 나눠줘야 한다. 체감 난이도: ★☆☆☆☆