본문 바로가기
반응형

전체 글252

[백준][Python] 1240번 노드사이의 거리 1240번: 노드사이의 거리 N(2≤N≤1,000)개의 노드로 이루어진 트리가 주어지고 M(M≤1,000)개의 두 노드 쌍을 입력받을 때 두 노드 사이의 거리를 출력하라. www.acmicpc.net 코드 import sys from collections import defaultdict def find(a,b): queue = [] queue.append((a,0)) visit[a] = True while queue: next,len = queue.pop() if next == b: return len for i,l in dic[next]: if visit[i]: continue visit[i] = True queue.append((i,l+len)) n,m = map(int,input().split().. 2022. 9. 29.
[백준][Python] 4803번 트리 4803번: 트리 입력으로 주어진 그래프에 트리가 없다면 "No trees."를, 한 개라면 "There is one tree."를, T개(T > 1)라면 "A forest of T trees."를 테스트 케이스 번호와 함께 출력한다. www.acmicpc.net 코드 import sys from collections import defaultdict def check(j): ret = True queue = [j] while queue: a = queue.pop() if visit[a] == 1: # 사이클 ret = False visit[a] = 1 for k in dic[a]: if k == a: ret = False if visit[k] == 0: queue.append(k) return ret .. 2022. 9. 27.
[백준][Python] 2824번 최대공약수 2824번: 최대공약수 첫째 줄에 N(1 ≤ N ≤ 1000)이 주어진다. 둘째 줄에는 N개의 양의 정수가 공백으로 구분되어 주어진다. 이 수는 모두 1,000,000,000보다 작고, N개의 수를 곱하면 A가 된다. 셋째 줄에 M(1 ≤ M ≤ 1000)이 www.acmicpc.net 코드 def gcd(n,m): while m>0: n,m = m, n%m return n n = int(input()) n_list = list(map(int,input().split())) m = int(input()) m_list = list(map(int,input().split())) n_num = 1 m_num = 1 for i in n_list: n_num *= i for i in m_list: m_num *=.. 2022. 9. 26.
[백준][Python] 2667번 단지번호붙이기 2667번: 단지번호붙이기 과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 철수는 이 지도를 가지고 연결된 집의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한다. 여 www.acmicpc.net 코드 from collections import deque dx = [0,0,1,-1] dy = [1,-1,0,0] def bfs(graph,x,y): queue = deque() queue.append((x,y)) graph[x][y] = 0 count = 1 while queue: x,y = queue.popleft() for i in range(4): # 상하좌우 모두 확인 x_n = x + dx[i] y_n = y + dy[i] if x_n < 0 or x.. 2022. 9. 22.
[백준][Python] 9421번 소수상근수 9421번: 소수상근수 양의 정수 n의 각 자리수의 제곱의 합을 계산한다. 그렇게 해서 나온 합도 각 자리수의 제곱의 합을 계산한다. 이렇게 반복해서 1이 나온다면, n을 상근수라고 한다. 700은 상근수이다. 72 + 02 + 02 = www.acmicpc.net 코드 import math def prime(num): for i in range(2,int(math.sqrt(num))+1): if num % i == 0: return False return True def check(num): visit = {} while 1: n = str(num) num = 0 for i in range(len(n)): num += int(n[i]) ** 2 if num == 1: return True if num .. 2022. 9. 21.
[백준][Python] 11256번 사탕 11256번: 사탕 당신은 사탕 공장의 주인이다. 날마다, 당신은 J개의 사탕을 가게에 보내기 위해 상자에 포장해야 한다. 당신은 크기가 다른 상자 N개를 가지고 있다. 당신은 편리를 위해 상자를 최소한으로 쓰 www.acmicpc.net 코드 import sys t = int(input()) for i in range(t): box = [] j,n = map(int,input().split()) for a in range(n): r,c = map(int,sys.stdin.readline().split()) box.append(r*c) box.sort(reverse=True) total = 0 for a in range(n): total += box[a] if total >= j: print(a+1) b.. 2022. 9. 20.
[백준][Python] 2168번 타일 위의 대각선 2168번: 타일 위의 대각선 첫째 줄에 가로의 길이 xcm와 세로의 길이 ycm가 주어진다. x와 y는 1,000,000,000 이하의 자연수이다. x와 y사이에는 빈칸이 하나 이상 있다. www.acmicpc.net 코드 def gcd(x,y): if y > x: x,y = y,x while 1: if y == 0: break x,y = y, x%y return x x,y = map(int,input().split()) g = gcd(x,y) print(x+y-g) 설명 예전에 비슷한 문제를 풀어봐서 답을 구하는 식이 x + y - gcd(x,y) 였던 것이 생각났다. def gcd(x, y): for i in range(min(x, y), 0, -1): if x % i == 0 and y % i =.. 2022. 9. 19.
[백준][Python] 2553번 마지막 팩토리얼 수 2553번: 마지막 팩토리얼 수 첫째 줄에 N이 주어진다. N은 20,000보다 작거나 같은 자연수 이다. www.acmicpc.net 코드 n = int(input()) ans = 1 for i in range(1,n+1): ans *= i ans = str(ans) for i in range(len(ans)-1,-1,-1): if int(ans[i]) != 0: print(ans[i]) break 설명 팩토리얼 계산 값 ans를 string형으로 변환한 후 뒤에서부터 하나씩 비교를 해서 0이 아닌 경우 해당 값을 출력해준다. string을 뒤집는 방법이 생각이 안나서 for문을 이용해서 뒤에부터 확인하는 방법을 썼다. ans = str(ans)[::-1] 구글링 해서 찾았는데 이제 기억이 났다. . . 2022. 9. 16.
[백준][Python] 2606번 바이러스 2606번: 바이러스 첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍의 수가 주어 www.acmicpc.net 코드 from collections import defaultdict def dfs(s): global cnt v.add(s) for i in virus[s]: if i not in v: cnt += 1 dfs(i) cnt = 0 com = int(input()) conn = int(input()) virus = defaultdict(list) v = set() for i in range(conn): a,b = map(int,input().split()) virus[.. 2022. 9. 15.
반응형