백준 썸네일형 리스트형 [백준] 3135번 - 라디오 1. 문제 2. 코드 a, b = map(int, input().split()) n = int(input()) a_b = abs(b-a) b_temp = abs(b-a) for i in range(n): temp = int(input()) if abs(temp-b) < b_temp: b_temp = abs(temp-b) if b_temp < a_b: a_b = abs(b_temp) + 1 print(a_b) 3. 풀이 그리디 알고리즘을 사용하는 문제. b와 가장 가까운 즐겨찾기 주파수로 이동해서 b와 그 주파수와의 거리를 구하면 된다. 단, 이 때 가장 가까운 즐겨찾기 주파수보다 a에서 b의 거리가 더 적다면 그냥 abs(a-b)를 해주면 된다. 더보기 [백준] 16435번 - 스네이크버드 1. 문제 2. 코드 n, l = map(int, input().split()) h = list(map(int, input().split())) h.sort() for i in range(n): if h[i] 더보기 [백준] 15729 - 방탈출 1. 문제 2. 코드 n = int(input()) l = list(map(int, input().split())) cur = [0 for _ in range(n)] cnt = 0 for i in range(n): if l[i] != cur[i]: cnt += 1 cur[i] = 1-cur[i] if i 1, 1->0) 시켜준다. 입력값과 달랐던 횟수를 출력하면 되는 쉬운 문제이다. 더보기 [백준] 1010번 - 다리 놓기 (파이썬) 1. 문제 2. 코드 import math t = int(input()) for _ in range(t): n, m = map(int, input().split()) ans = math.factorial(m) // (math.factorial(n)*math.factorial(m-n)) print(ans) 3. 풀이 m개의 사이트에 n개의 다리를 짓는 경우의 수를 구하는 문제이다. mCn. 즉, m! / ((m-n)! * n!) 이다. 이 때, 파이썬은 math 라이브러리에서 factorial을 이미 제공해준다. 따라서 해당 함수만 사용하면 쉽게 풀 수 있다. 더보기 [백준] 10845번 - 큐 1. 문제 2. 코드 from collections import deque import sys n = int(input()) queue = deque() for i in range(n): temp = sys.stdin.readline() #push if temp[0] == 'p' and temp[1] == 'u': temp, temp_num = temp.split() queue.append(temp_num) #pop elif temp[0] == 'p': if len(queue) == 0: print(-1) continue temp_num = queue.popleft() print(temp_num) #size elif temp[0] == 's': print(len(queue)) #empty elif tem.. 더보기 [백준] 5639번 - 이진 검색 트리 1. 문제 2. 코드 import sys sys.setrecursionlimit(10 ** 6) temp = sys.stdin.readline tree = [] def post_order(start, end): if start > end: return root = tree[start] idx = start + 1 while idx l -> r 중위 : l -> root -> r 후위 : l -> r -> root 전위 순회 결과를 가지고 후위 순회 결과를 출력하는 문제. (곧 설명 보강 예정,,,) 더보기 [백준] 2606번 - 바이러스 1. 문제 2. 코드 n = int(input()) m = int(input()) l = [0 for i in range(n+1)] matrix = [[0]*(n+1) for i in range(n+1)] for i in range(m): a, b = map(int, input().split()) matrix[a][b] = 1 matrix[b][a] = 1 def dfs(v): l[v] = 1 for i in range(n+1): if (l[i] == 0 and matrix[v][i] == 1): dfs(i) dfs(1) #print(cnt) print(sum(l)-1) 3. 풀이 dfs를 사용해서 풀면 쉬운 문제이다. dfs를 어떻게 작성하는지 잘 모른다면 아래 포스팅을 참고. https://talta.. 더보기 [백준] 1260번 - DFS와 BFS 1. 문제 2. 코드 n, m, v = map(int, input().split()) l_v = [0 for i in range(n+1)] l = [[0] * (n+1) for i in range(n+1)] for i in range(m): a, b = map(int, input().split()) l[a][b] = l[b][a] = 1 #print(l) #dfs def dfs(v): print(v, end = ' ') l_v[v] = 1 for i in range(1, n+1): if(l_v[i] == 0 and l[v][i] == 1): dfs(i) #bfs def bfs(v): queue = [v] l_v[v] = 0 while queue: v = queue.pop(0) print(v, end = .. 더보기 이전 1 2 3 4 5 6 ··· 8 다음