본문 바로가기
반응형

프로그래밍 공부/파이썬 알고리즘 공부18

(백준 파이썬) 11047. 동전0 https://www.acmicpc.net/problem/11047 11047번: 동전 0 첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) 둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수) www.acmicpc.net 큰 수부터 나눠주는 것이 중요하다. # 11047 동전 https://www.acmicpc.net/problem/11047 n,m = map(int,input().split()) coins = list(int(input()) for i in range(n)) count = 0 for i in range(n-1,-1,-1): numbe.. 2022. 1. 22.
(백준 파이썬) 10828번. 스택 https://www.acmicpc.net/problem/10828 10828번: 스택 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 스택은 파이썬의 list를 활용하여 쉽게 구현할 수 있다. # 10828 스택 https://www.acmicpc.net/problem/11047 import sys input = sys.stdin.readline n = int(input()) stack = [] for i in range(0,n): k = input().split() if k[0] == 'push': stack.. 2022. 1. 22.
(백준 파이썬) 1003번. 피보나치 함수 https://www.acmicpc.net/problem/1003 1003번: 피보나치 함수 각 테스트 케이스마다 0이 출력되는 횟수와 1이 출력되는 횟수를 공백으로 구분해서 출력한다. www.acmicpc.net 피보나치 함수에서 0과 1이 몇번 나오는지 구현하는 함수다. 어떻게 풀지 몰라서 일단 0과 1이 몇번 나오는지 초반에 그려봤는데, 0은 [1,0,1,1,2,3,5,8...] 번 나오고 (1,0으로 시작하는 피보나치 수열) 1은 [0,1,1,2,3,5,8...] 번 나오는 것을 확인하였다. (0,1로 시작하는 피보나치 수열) 이를 구현하면 다음과 같다. # 1003 https://www.acmicpc.net/problem/1003 n = int(input()) for i in range(n): .. 2022. 1. 22.
(백준 파이썬) 2798번. 블랙잭 https://www.acmicpc.net/problem/2798 2798번: 블랙잭 첫째 줄에 카드의 개수 N(3 ≤ N ≤ 100)과 M(10 ≤ M ≤ 300,000)이 주어진다. 둘째 줄에는 카드에 쓰여 있는 수가 주어지며, 이 값은 100,000을 넘지 않는 양의 정수이다. 합이 M을 넘지 않는 카드 3장 www.acmicpc.net # 2798 블랙잭 n,m = map(int,input().split()) array = list(map(int,input().split())) total = [] for i in array: for j in array: for k in array: if i == j or i == k or j ==k: continue sum = i + j + k total.appe.. 2022. 1. 21.
(백준 파이썬) 2750번. 수 정렬하기 https://www.acmicpc.net/problem/2750 2750번: 수 정렬하기 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. www.acmicpc.net # 2750 수 정렬하기 n = int(input()) list=[] for i in range(n): m = int(input()) list.append(m) list.sort() for i in range(len(list)): print(list[i]) 내장함수 sort를 활용하면 쉽다. 다만 내장함수 활용하지 못할 경우 선택정렬, 퀵정렬, 힙정렬, 계수정렬 등을 구현해야 할 듯 하다. 2022. 1. 21.
(백준 파이썬) 2581번. 소수 1. 문제 https://www.acmicpc.net/problem/2581 2581번: 소수 M이상 N이하의 자연수 중 소수인 것을 모두 찾아 첫째 줄에 그 합을, 둘째 줄에 그 중 최솟값을 출력한다. 단, M이상 N이하의 자연수 중 소수가 없을 경우는 첫째 줄에 -1을 출력한다. www.acmicpc.net 2. 풀이 # 2581 m = int(input()) n = int(input()) # m이상 n이하 숫자 목록 l = [] for x in range(m,n+1): l.append(x) # 소수 찾기 l_s = [] for i in l: cnt = 0 if i == 1: # 1 처리 continue for j in range(1,i): # i를 1부터 i-1까지 나눔 if i % j == 0: .. 2022. 1. 9.
(백준 파이썬) 1292번. 쉽게 푸는 문제 1. 문제 https://www.acmicpc.net/problem/1292 1292번: 쉽게 푸는 문제 첫째 줄에 구간의 시작과 끝을 나타내는 정수 A, B(1 ≤ A ≤ B ≤ 1,000)가 주어진다. 즉, 수열에서 A번째 숫자부터 B번째 숫자까지 합을 구하면 된다. www.acmicpc.net 2. 풀이 # 1292 n,m = map(int,input().split()) list=[] for i in range(1000): for j in range(i): list.append(i) list1 = list[n-1:m] sum = 0 for i in list1: sum += i print(sum) 2022. 1. 9.
(백준 파이썬) 1978번. 소수 찾기 1. 문제 https://www.acmicpc.net/problem/1978 1978번: 소수 찾기 첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다. www.acmicpc.net 2. 풀이 # 어려웠음 # 2번 이상 나누어떨어지는 경우를 무시하고, 1번만 나눠떨어지는 애들만 count함 # 1978 m = int(input()) n = list(map(int, input().split())) count = 0 for i in n: cnt = 0 if i == 1: # 1 처리 cnt = 0 for j in range(1,i): # i를 1부터 i-1까지 나눔 if i % j == 0: cnt+=1 # 나눠지는 경우를 모두 cnt .. 2022. 1. 9.
반응형