[BOJ][Python] 2839 설탕 배달
·
🚩 Coding Test/Baekjoon
[문제] https://www.acmicpc.net/problem/2839 2839번: 설탕 배달 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그 www.acmicpc.net [코드] 정확히 N kg 배달해야하고, 봉지의 개수를 최소로 해야하므로, 5kg 봉지로 먼저 채우며, 나머지가 3kg 봉지로 나누어 떨어지는지 확인한다. 위의 경우가 없다면, 3kg 봉지로 먼저 채우고, 나머지가 5kg 봉지로 나누어 떨어지는지 확인한다. 모든 경우에 해당하지 않으면 -1을 출력 n = int(input()) for i in range(n // 5, -1, -1): re = n - ..
[BOJ][Python] 19532 수학은 비대면강의입니다.
·
🚩 Coding Test/Baekjoon
[문제] https://www.acmicpc.net/problem/19532 19532번: 수학은 비대면강의입니다 정수 $a$, $b$, $c$, $d$, $e$, $f$가 공백으로 구분되어 차례대로 주어진다. ($-999 \leq a,b,c,d,e,f \leq 999$) 문제에서 언급한 방정식을 만족하는 $\left(x,y\right)$가 유일하게 존재하고, 이 때 $x$와 $y$가 각각 $- www.acmicpc.net [코드] 브루트포스 단계인데, 연립방정식으로 풀었다. 이중반복문을 사용해서 브루트포스 방법으로 풀어도 된다. import sys input = sys.stdin.readline a,b,c,d,e,f = map(int,input().split()) print((c*e-b*f)//(a*e..
[BOJ][Python] 2231 분해합
·
🚩 Coding Test/Baekjoon
[문제] https://www.acmicpc.net/problem/2231 2231번: 분해합 어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이 www.acmicpc.net [코드] import sys input = sys.stdin.readline def cal(n): for i in range(n): sumN, x = i, i #i 값을 그대로 쓰면 변경되기 때문에 x에 임시저장 while x>=1: #각 자리 수의 합 sumN += x % 10 x //= 10 if n == sumN: return i return 0 n = ..
[BOJ][Python] 2798 블랙잭
·
🚩 Coding Test/Baekjoon
[문제] https://www.acmicpc.net/problem/2798 2798번: 블랙잭 첫째 줄에 카드의 개수 N(3 ≤ N ≤ 100)과 M(10 ≤ M ≤ 300,000)이 주어진다. 둘째 줄에는 카드에 쓰여 있는 수가 주어지며, 이 값은 100,000을 넘지 않는 양의 정수이다. 합이 M을 넘지 않는 카드 3장 www.acmicpc.net [코드] 아이디어: 조합으로 숫자 3개를 뽑고, 조합마다 더한 값이 m보다 같거나 작은 것들 중 최댓값을 고른다. import sys input = sys.stdin.readline from itertools import combinations as comb n,m = map(int,input().split()) arr = list(map(int,input..
[BOJ][Python] 11653 소인수분해
·
🚩 Coding Test/Baekjoon
[문제] https://www.acmicpc.net/problem/11653 11653번: 소인수분해 첫째 줄에 정수 N (1 ≤ N ≤ 10,000,000)이 주어진다. www.acmicpc.net [코드] 처음 아이디어 n = int(input()) if n > 1: for i in range(2,n+1): if n == 1: break if n % i == 0: while n % i == 0: print(i) n //= i 위의 코드에서 시간복잡도를 줄인 코드 n = int(input()) if n > 1: while n % 2 == 0: print(2) n //= 2 for i in range(3, int(n ** 0.5) + 1, 2): while n % i == 0: print(i) n //=..
[BOJ][Python] 2581 소수
·
🚩 Coding Test/Baekjoon
[문제] https://www.acmicpc.net/problem/2581 2581번: 소수 M이상 N이하의 자연수 중 소수인 것을 모두 찾아 첫째 줄에 그 합을, 둘째 줄에 그 중 최솟값을 출력한다. 단, M이상 N이하의 자연수 중 소수가 없을 경우는 첫째 줄에 -1을 출력한다. www.acmicpc.net [코드] def isPrime(x): cnt = 0 for i in range(2,x): if x % i == 0: cnt += 1 break return 1 if cnt == 0 else 0 #main m = int(input()) n = int(input()) prime = [] for i in range(m,n+1): if isPrime(i) == 1 and i != 1: prime.appen..
[BOJ][Python] 1978 소수 찾기
·
🚩 Coding Test/Baekjoon
[문제] https://www.acmicpc.net/problem/1978 1978번: 소수 찾기 첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다. www.acmicpc.net [코드] n = int(input()) arr = list(map(int,input().split())) #소수인지 판별하는 함수 def isPrime(x): cnt = 0 for i in range(2,x): if x % i == 0: cnt += 1 break return 1 if cnt == 0 else 0 #main result = 0 for i in arr: if isPrime(i) == 1 and i != 1: result += 1 print(r..
[BOJ][Python] 2644 촌수계산
·
🚩 Coding Test/Baekjoon
[문제] https://www.acmicpc.net/problem/2644 2644번: 촌수계산 사람들은 1, 2, 3, …, n (1 ≤ n ≤ 100)의 연속된 번호로 각각 표시된다. 입력 파일의 첫째 줄에는 전체 사람의 수 n이 주어지고, 둘째 줄에는 촌수를 계산해야 하는 서로 다른 두 사람의 번호가 주어 www.acmicpc.net [코드] #S2_2644 촌수계산.py #dfs def dfs(v,depth): global graph, visit visit[v] = 1 if v == v2: #도착 노드에 도달한 경우 return depth for i in range(1, n+1): if graph[v][i] == 1 and not visit[i]: result = dfs(i,depth+1) if ..
[BOJ][Python] 2606 바이러스
·
🚩 Coding Test/Baekjoon
[문제] https://www.acmicpc.net/problem/2606 2606번: 바이러스 첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하인 양의 정수이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍 www.acmicpc.net [코드] #S3_2606 바이러스.py #dfs def dfs(x): global graph, visit visit[x] = 1 cnt = 1 #현재 노드를 포함하므로 1로 초기화 for i in range(1, com+1): if graph[x][i] == 1 and not visit[i]: cnt += dfs(i) return cnt #main com = int(input()) net = ..
[BOJ][Python] 1260 DFS와 BFS
·
🚩 Coding Test/Baekjoon
[문제] https://www.acmicpc.net/problem/1260 1260번: DFS와 BFS 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사 www.acmicpc.net [코드] #S2_1260 DFS와 BFS.py from collections import deque #dfs def dfs(x):#깊이우선탐색 global graph, visit, answer visit[x] = 1#현재 노드 방문 표시 answer.append(x)#방문한 노드 answer 추가 for i in range(1, n+1): if gra..