Python 백준 알고리즘 11404 : 플로이드
·
Coding Test
https://www.acmicpc.net/problem/11404 11404번: 플로이드 첫째 줄에 도시의 개수 n이 주어지고 둘째 줄에는 버스의 개수 m이 주어진다. 그리고 셋째 줄부터 m+2줄까지 다음과 같은 버스의 정보가 주어진다. 먼저 처음에는 그 버스의 출발 도시의 번호가 www.acmicpc.net # 11404 플로이드 n = int(input()) m = int(input()) INF = int(1e9) graph = [[INF] * (n) for i in range(n)] for _ in range(m): i, j, cost = map(int, input().split()) if graph[i-1][j-1] > cost: graph[i-1][j-1] = cost for k in rang..
Python 백준 알고리즘 11657 : 타임머신
·
Coding Test
https://www.acmicpc.net/problem/11657 11657번: 타임머신 첫째 줄에 도시의 개수 N (1 ≤ N ≤ 500), 버스 노선의 개수 M (1 ≤ M ≤ 6,000)이 주어진다. 둘째 줄부터 M개의 줄에는 버스 노선의 정보 A, B, C (1 ≤ A, B ≤ N, -10,000 ≤ C ≤ 10,000)가 주어진다. www.acmicpc.net # 11657 타임머신 벨만 포드 알고리즘 n, m = map(int, input().split()) edges = [] INF = int(1e9) dist = [INF] * (n+1) for _ in range(m): a, b, c = map(int, input().split()) edges.append((a,b,c)) def bell..
Python 백준 알고리즘 1516 : 게임 개발
·
Coding Test
https://www.acmicpc.net/problem/1516 1516번: 게임 개발 첫째 줄에 건물의 종류 수 N(1 ≤ N ≤ 500)이 주어진다. 다음 N개의 줄에는 각 건물을 짓는데 걸리는 시간과 그 건물을 짓기 위해 먼저 지어져야 하는 건물들의 번호가 주어진다. 건물의 번호는 1부 www.acmicpc.net # 1516 게임 개발 from collections import defaultdict, deque n = int(input()) ans = [0] * (n+1) # 건물을 짓는데 필요한 시간 time = [0] * (n+1) # 진입차수 degree = [0] * (n+1) q = deque() # 간선표현 graph = defaultdict(list) #위상 정렬 알고리즘 for i..
Python 백준 알고리즘 1717 : 집합의 표현
·
Coding Test
https://www.acmicpc.net/problem/1717 1717번: 집합의 표현 초기에 $n+1$개의 집합 $\{0\}, \{1\}, \{2\}, \dots , \{n\}$이 있다. 여기에 합집합 연산과, 두 원소가 같은 집합에 포함되어 있는지를 확인하는 연산을 수행하려고 한다. 집합을 표현하는 프로그램을 작 www.acmicpc.net 이 문제는 유니온 파인드 문제인데, 처음에는 어떻게 풀 지 몰라서 헤매다가 구글링 해서 유니온 파인드의 정석 문제인 것을 알았다. https://jainn.tistory.com/87 유니온 파인드(UNION-FIND) 파이썬 / 자바 구현 유니온 파인드(Union-Find)는 트리형태를 갖는 자료구조이다. 합집합 찾기 및 상호 배타적 집합(Disjoint-se..
Python 백준 알고리즘 : 1065 한수
·
Coding Test
https://www.acmicpc.net/problem/1065 1065번: 한수 어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 www.acmicpc.net # 1065 한수 def hansu(num) : hansu_cnt = 0 for i in range(1, num+1) : num_list = list(map(int, str(i))) if i < 100 : hansu_cnt += 1 elif num_list[0] - num_list[1] == num_list[1] - num_list[2] : hansu_cnt += 1 return hansu_cnt x..
Python 백준 알고리즘 4673 : 셀프 넘버
·
Coding Test
https://www.acmicpc.net/problem/4673 4673번: 셀프 넘버 셀프 넘버는 1949년 인도 수학자 D.R. Kaprekar가 이름 붙였다. 양의 정수 n에 대해서 d(n)을 n과 n의 각 자리수를 더하는 함수라고 정의하자. 예를 들어, d(75) = 75+7+5 = 87이다. 양의 정수 n이 주어졌을 때, www.acmicpc.net # 4673 셀프 넘버 numbers = list(range(1,10001)) remove_list = [] for num in numbers : for n in str(num) : num += int(n) if num
Python 백준 알고리즘 15596 : 정수 n개의 합
·
Coding Test
https://www.acmicpc.net/problem/15596 15596번: 정수 N개의 합 C++17, Java 8, Python 3, C11, PyPy3, C99, C++98, C++11, C++14, Go, C99 (Clang), C++98 (Clang), C++11 (Clang), C++14 (Clang), C11 (Clang), C++17 (Clang) www.acmicpc.net # 15596 정수 n개의 합 def solve(a: list) -> int: return sum(a) sum() 함수를 사용해 줬다.
Python 백준 알고리즘 4344 : 평균은 넘겠지
·
Coding Test
https://www.acmicpc.net/problem/4344 4344번: 평균은 넘겠지 대학생 새내기들의 90%는 자신이 반에서 평균은 넘는다고 생각한다. 당신은 그들에게 슬픈 진실을 알려줘야 한다. www.acmicpc.net # 4344 평균은 넘겠지 n = int(input()) for _ in range(n): nums = list(map(int, input().split())) avg = sum(nums[1:])/nums[0] count = 0 for score in nums[1:]: if score > avg: count += 1 rate = count/nums[0] * 100 print(f'{rate:.3f}%') 처음에 입력받은 수만큼 for문을 반복한다. 첫 번째 for문 안에서는 ..
Python 백준 알고리즘 8959 : OX퀴즈
·
Coding Test
https://www.acmicpc.net/problem/8958 8958번: OX퀴즈 "OOXXOXXOOO"와 같은 OX퀴즈의 결과가 있다. O는 문제를 맞은 것이고, X는 문제를 틀린 것이다. 문제를 맞은 경우 그 문제의 점수는 그 문제까지 연속된 O의 개수가 된다. 예를 들어, 10번 문제의 점수 www.acmicpc.net # 8958 OX퀴즈 n = int(input()) for _ in range(n): ox_list = list(input()) score = 0 sum_score = 0 for ox in ox_list: if ox =='O': score += 1 sum_score += score else: score = 0 print(sum_score) 테스트 케이스의 개수를 n에 입력받고 ..
Python 백준 알고리즘 3052 : 나머지
·
Coding Test
3052번: 나머지 각 수를 42로 나눈 나머지는 39, 40, 41, 0, 1, 2, 40, 41, 0, 1이다. 서로 다른 값은 6개가 있다. www.acmicpc.net # 3052 for문 사용 a = [] for i in range(10): num = int(input()) if num%42 not in a: a.append(num % 42) print(len(a)) 우선 빈 배열 a를 만들어준다. 10번의 반복으로 42로 나눌 값들을 입력받아, 입력받은 값을 42로 나눈 나머지 값이 배열 a에 존재하지 않으면 나머지 값을 배열 a에 추가해 준다. 밑에는 set() 함수를 사용한 코드이다. # 3052 set()함수 사용 a = [] for i in range(10): num = int(inpu..