BOJ 29

백준 15649. N과 M (1) [Python]

문제 : N과 M (1) 난이도 : 실버 3 언어 : Python 문제 링크 : https://www.acmicpc.net/problem/15649 15649번: N과 M (1) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net def recur(lev): if lev == M: print(*path) return for i in range(N): if visited[i] == 0: visited[i] = 1 path.append(i+1) recur(lev+1) path.pop() visited[i] = 0 N, M = map(int, in..

BOJ 2022.06.03

백준 11724. 연결 요소의 개수 [Python]

문제 : 연결 요소의 개수 난이도 : 실버 2 언어 : Python 문제 링크 : https://www.acmicpc.net/problem/11724 11724번: 연결 요소의 개수 첫째 줄에 정점의 개수 N과 간선의 개수 M이 주어진다. (1 ≤ N ≤ 1,000, 0 ≤ M ≤ N×(N-1)/2) 둘째 줄부터 M개의 줄에 간선의 양 끝점 u와 v가 주어진다. (1 ≤ u, v ≤ N, u ≠ v) 같은 간선은 한 번만 주 www.acmicpc.net def dfs(j): for k in arr[j]: if visited[k] == 0: visited[k] = 1 dfs(k) N, M = map(int, input().split()) arr = [[] for _ in range(N+1)] visited..

BOJ 2022.06.02

백준 1302. 베스트셀러 [Python]

문제 : 베스트셀러 난이도 : 실버 4 언어 : Python 문제 링크 : https://www.acmicpc.net/problem/1302 1302번: 베스트셀러 첫째 줄에 오늘 하루 동안 팔린 책의 개수 N이 주어진다. 이 값은 1,000보다 작거나 같은 자연수이다. 둘째부터 N개의 줄에 책의 제목이 입력으로 들어온다. 책의 제목의 길이는 50보다 작거나 같고 www.acmicpc.net N = int(input()) lst = list(input() for _ in range(N)) lst.sort() lst2 = set(lst) max_cnt = 0 book = '' for i in lst2: cnt = 0 for j in range(N): if i == lst[j]: cnt += 1 if max..

BOJ 2022.06.02

백준 1449. 수리공 항승 [Python]

문제 : 수리공 항승 난이도 : 실버 3 언어 : Python 문제 링크 : https://www.acmicpc.net/problem/1449 1449번: 수리공 항승 첫째 줄에 물이 새는 곳의 개수 N과 테이프의 길이 L이 주어진다. 둘째 줄에는 물이 새는 곳의 위치가 주어진다. N과 L은 1,000보다 작거나 같은 자연수이고, 물이 새는 곳의 위치는 1,000보다 작거나 www.acmicpc.net N, L = map(int, input().split()) leak = list(map(int, input().split())) cnt = 0 ssum = 0 leak.sort() for i in range(N-1): ssum += leak[i+1] - leak[i] if ssum >= L: cnt += ..

BOJ 2022.05.30

백준 11047. 동전 0 [Python]

문제 : 동전 0 난이도 : 실버 3 언어 : Python 문제 링크 : https://www.acmicpc.net/problem/11047 N, K = map(int, input().split()) coin = [] for _ in range(N): coin.append(int(input())) cnt = 0 num = K for i in range(N-1, -1, -1): if num == 0: break if num - coin[i] >= 0: cnt += (num // coin[i]) num = num % coin[i] print(cnt) 그리디 문제. 역순으로 동전을 빼나가면서 현재 값을 갱신하며 동전의 개수 또한 세줌. 자칫하면 시간초과가 날 수 있으므로 효율적인 코드가 중요한 것 같다.

BOJ 2022.05.23

백준 5014. 스타트링크 [Python]

문제 : 스타트링크 난이도 : 골드 5 언어 : Python 문제 링크 : https://www.acmicpc.net/problem/5014 from collections import deque ''' 총 높이 : F 현재 층 : S 건물 위치 : G 위로 U만큼 : U 아래로 D만큼 : D ''' def bfs(s): queue = deque() queue.append(s) while queue: p_s = queue.popleft() # 해당 층 수 찾으면 횟수 return if p_s == G: return visited[p_s] # U, D 0일때를 포함시켜버리면 횟수가 늘어나버리므로 U, D != 0 # 0층은 존재하지 않으므로 p_s - D 의 최소는 1이 돼야함 (p_s-D > 0) # bf..

BOJ 2022.05.05

백준 2609. 최대공약수와 최소공배수 [Python]

문제 : 최대공약수와 최소공배수 난이도 : 실버 5 언어 : Python 문제 링크 : https://www.acmicpc.net/problem/2609 2609번: 최대공약수와 최소공배수 첫째 줄에는 입력으로 주어진 두 수의 최대공약수를, 둘째 줄에는 입력으로 주어진 두 수의 최소 공배수를 출력한다. www.acmicpc.net N, M = map(int,input().split()) C = max(N, M) P_C = 1 while C > 0: if N % C == 0 and M % C == 0: N = N // C M = M // C P_C = P_C * C C -= 1 print(P_C) print(N*M*P_C)

BOJ 2022.04.19

백준 1920. 수 찾기 [Python]

문제 : 수 찾기 난이도 : 실버 4 언어 : Python 문제 링크 : https://www.acmicpc.net/problem/1920 1920번: 수 찾기 첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들 www.acmicpc.net import sys def binary_search(target, data): start = 0 end = len(data) - 1 while start

BOJ 2022.04.17

백준 1259. 팰린드롬수[Python]

문제 : 팰린드롬수 난이도 : 브론즈 1 언어 : Python 문제 링크 : https://www.acmicpc.net/problem/1259 1259번: 팰린드롬수 입력은 여러 개의 테스트 케이스로 이루어져 있으며, 각 줄마다 1 이상 99999 이하의 정수가 주어진다. 입력의 마지막 줄에는 0이 주어지며, 이 줄은 문제에 포함되지 않는다. www.acmicpc.net while True: n_lst = input() if n_lst == '0': break n_lst2 = '' for i in n_lst: n_lst2 = i + n_lst2 if n_lst == n_lst2: print('yes') else: print('no') 반복을 통해 펠린드롬을 검사하다가 0문자열을 만났을 때 반복문을 탈출하..

BOJ 2022.04.17
LIST