Baby Yoshi Blinking
백준[1260] - DFS와 BFS
·
💻 코딩테스트/백준
문제 1260번: DFS와 BFS 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사 www.acmicpc.net 작성한 코드 from collections import deque import sys sys.setrecursionlimit(10**6) input = sys.stdin.readline def dfs(v): visited[v] = True print(v, end=" ") for i in graph[v]: if visited[i] == False: dfs(i) def bfs(v): q = deque([v]) visited..
백준[2606] - 바이러스
·
카테고리 없음
문제 2606번: 바이러스 첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍의 수가 주어 www.acmicpc.net 작성한 코드 import sys sys.setrecursionlimit(10**6) input = sys.stdin.readline N = int(input()) M = int(input()) graph = [[] for _ in range(N+1)] visited = [0] * (N+1) order = 1 for _ in range(M): u,v = map(int, input().split()) graph[u].append(v) graph[v].append(u..
백준[24479] - 알고리즘 수업 (너비 우선 탐색 2)
·
💻 코딩테스트/백준
문제 24445번: 알고리즘 수업 - 너비 우선 탐색 2 첫째 줄에 정점의 수 N (5 ≤ N ≤ 100,000), 간선의 수 M (1 ≤ M ≤ 200,000), 시작 정점 R (1 ≤ R ≤ N)이 주어진다. 다음 M개 줄에 간선 정보 u v가 주어지며 정점 u와 정점 v의 가중치 1인 양 www.acmicpc.net 작성한 코드 import sys from collections import deque input = sys.stdin.readline N, M, R = map(int, input().split()) graph = [[] for _ in range(N+1)] visited = [0] * (N+1) order = 1 for _ in range(M): u, v = map(int, input(..
백준[24444] - 알고리즘 수업 (너비 우선 탐색 1)
·
💻 코딩테스트/백준
문제 24444번: 알고리즘 수업 - 너비 우선 탐색 1 첫째 줄에 정점의 수 N (5 ≤ N ≤ 100,000), 간선의 수 M (1 ≤ M ≤ 200,000), 시작 정점 R (1 ≤ R ≤ N)이 주어진다. 다음 M개 줄에 간선 정보 u v가 주어지며 정점 u와 정점 v의 가중치 1인 양방 www.acmicpc.net 작성한 코드 import sys from collections import deque input = sys.stdin.readline N, M, R = map(int, input().split()) graph = [[] for _ in range(N+1)] visited = [0] * (N+1) order = 1 for _ in range(M): u, v = map(int, input..
백준[24480] - 알고리즘 수업 (깊이 우선 탐색 2)
·
💻 코딩테스트/백준
문제 24480번: 알고리즘 수업 - 깊이 우선 탐색 2 첫째 줄에 정점의 수 N (5 ≤ N ≤ 100,000), 간선의 수 M (1 ≤ M ≤ 200,000), 시작 정점 R (1 ≤ R ≤ N)이 주어진다. 다음 M개 줄에 간선 정보 u v가 주어지며 정점 u와 정점 v의 가중치 1인 양 www.acmicpc.net 작성한 코드 import sys input = sys.stdin.readline sys.setrecursionlimit(10**6) N, M, R = map(int, input().split()) graph = [[] for _ in range(N+1)] visited = [0] * (N+1) order = 1 for _ in range(M): u, v = map(int, input()..
백준[24479] - 알고리즘 수업 (깊이 우선 탐색 1)
·
💻 코딩테스트/백준
문제 24479번: 알고리즘 수업 - 깊이 우선 탐색 1 첫째 줄에 정점의 수 N (5 ≤ N ≤ 100,000), 간선의 수 M (1 ≤ M ≤ 200,000), 시작 정점 R (1 ≤ R ≤ N)이 주어진다. 다음 M개 줄에 간선 정보 u v가 주어지며 정점 u와 정점 v의 가중치 1인 양 www.acmicpc.net 작성한 코드 import sys input = sys.stdin.readline sys.setrecursionlimit(10**6) N, M, R = map(int, input().split()) graph = [[] for _ in range(N+1)] visited = [0] * (N+1) order = 1 for _ in range(M): u, v = map(int, input()..
백준[1436] - 영화감독 숌
·
💻 코딩테스트/백준
문제 1436번: 영화감독 숌 666은 종말을 나타내는 수라고 한다. 따라서, 많은 블록버스터 영화에서는 666이 들어간 제목을 많이 사용한다. 영화감독 숌은 세상의 종말 이라는 시리즈 영화의 감독이다. 조지 루카스는 스타워 www.acmicpc.net 아이디어 - 종말의 수 = 666을 연속으로 갖는 수 ex) 666, 1666, 2666, 3666, 4666, 5666, 6660, 6661, 6662, 6663, ... - 별다른 방법 없이, 1부터 '666'이 있는지/없는지 비교해야 한다. 작성한 코드 N = int(input()) count = 0 num = 1 while True: if '666' in str(num): count += 1 if count == N: print(num) break..
백준[7568] - 덩치
·
💻 코딩테스트/백준
문제 7568번: 덩치 우리는 사람의 덩치를 키와 몸무게, 이 두 개의 값으로 표현하여 그 등수를 매겨보려고 한다. 어떤 사람의 몸무게가 x kg이고 키가 y cm라면 이 사람의 덩치는 (x, y)로 표시된다. 두 사람 A 와 B의 덩 www.acmicpc.net 작성한 코드 N = int(input()) info = list() for _ in range(N): info.append(list(map(int, input().split()))) for i in info: rank = 1 for j in info: if i[0] < j[0] and i[1] < j[1]: rank += 1 print(rank, end=' ') - 전체 사람 수 N을 int형으로 입력받는다. - info 라는 리스트 선언해준다..
백준[2231] - 분해합
·
💻 코딩테스트/백준
문제 2231번: 분해합 어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이 www.acmicpc.net 작성한 코드 N = int(input()) result = 0 for i in range(1, N+1): M = list(map(int, str(i))) K = i + sum(M) if K == N: result = i break print(result) (문제 이해가 잘 되지 않아서 문제푸는 방법을 바로 생각해내지 못했다.) - 숫자 N을 입력받는다. - 결과값을 저장할 result를 0으로 초기화시켜준다. - 1부터 N까지(..
백준[2798] - 블랙잭
·
💻 코딩테스트/백준
문제 2798번: 블랙잭 첫째 줄에 카드의 개수 N(3 ≤ N ≤ 100)과 M(10 ≤ M ≤ 300,000)이 주어진다. 둘째 줄에는 카드에 쓰여 있는 수가 주어지며, 이 값은 100,000을 넘지 않는 양의 정수이다. 합이 M을 넘지 않는 카드 3장 www.acmicpc.net 작성한 코드 from itertools import combinations N, M = map(int, input().split()) cards = list(map(int, input().split())) result = 0 for i in combinations(cards, 3): if result < sum(i)
백준 [13305] - 주유소
·
💻 코딩테스트/백준
문제 13305번: 주유소 표준 입력으로 다음 정보가 주어진다. 첫 번째 줄에는 도시의 개수를 나타내는 정수 N(2 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 인접한 두 도시를 연결하는 도로의 길이가 제일 왼쪽 도로부터 N-1 www.acmicpc.net 아이디어 : 리터 당 가격이 최솟값인 것을 기준으로 움직인다고 생각하기! : 첫 도시의 주유소의 리터 당 가격을 최솟값으로 시작 → 이후에 이동하다가 해당 가격보다 더 싼 주유소를 발견? → 최솟값 갱신 작성한 코드 N = int(input()) km = list(map(int, input().split())) price = list(map(int, input().split())) total = 0 min_price = price[0] for ..
백준 [1541] - 잃어버린 괄호
·
💻 코딩테스트/백준
문제 1541번: 잃어버린 괄호 첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다 www.acmicpc.net 아이디어 ex) 식이 55 + 50 - 40 + 55 -30 일 때, [공통 아이디어] : (55 + 50) - (40 + 55) - 30 으로 생각하면 된다. → '-' 기준으로 나눈다 가 먼저! [내가 생각한 방법] 1)-를 기준으로 나눠서 +연산들을 다 하고 2)+연산한 값들을 다시 다 빼주면 → 최소값이 나온다! → 55+50, 40+55, 30 으로 나눠서, +있는 것들 먼저 계산 → 105, 95, 30 을 다 빼주기 → 105 - 95 -..
// 코드 블럭 복사