일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
- sort
- 코테
- 월간 코드 챌린지 시즌2
- 퇴각검색
- 백준
- 다익스트라
- 동적계획법
- 백트래킹
- 최빈값
- 2중포문
- DFS
- 404에러
- 최단거리
- 소트인사이드
- Python
- 정렬
- 브루트포스
- 그리디알고리즘
- 프로그래머스
- 동적
- 그리디
- 덩치
- 통계학
- Backtracking
- 코딩테스트
- 소트
- 파이썬
- 스프링프레임워크
- 스프링
- 스택
- Today
- Total
목록코딩테스트/백준 (58)
취준생의 코딩테스트 연습기
# 문제 링크 www.acmicpc.net/problem/1541 1541번: 잃어버린 괄호 첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다 www.acmicpc.net # Soultion 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 s = input() li = [] num = '' for i in s: if i.isdigit(): num += str(i) else: if num!='': li.append(int(num)) num = '' li.append(i) li.app..
# 문제 링크 www.acmicpc.net/problem/11399 11399번: ATM 첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000) www.acmicpc.net # Soultion 걸리는 시간의 최소값을 구하기위해서는 오름차순으로 정렬하는 것이 중요하다. 1 2 3 4 5 6 7 8 9 10 n = int(input()) li = list(map(int,input().split())) li.sort() s = 0 tm = [] for i in li: s += i tm.append(s) print(sum(tm)) cs 3. 오름차순 정렬 5. 누적되는 값 저장할 변수 6. 각 순서에서 ..
# 문제 링크 www.acmicpc.net/problem/1931 1931번: 회의실 배정 (1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다. www.acmicpc.net # Soultion 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 n = int(input()) li = [] for _ in range(n): li.append(list(map(int,input().split()))) li.sort(key = lambda x : (x[1],x[0])) cnt = 0 end = 0 for i in li: if i[0]>=end: end = i[1] cnt +=1 print(cnt) Colored by Color Scripter cs 3. 회의의 시간을 li에 2..
# 문제 링크 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 # Soultion 1 2 3 4 5 6 7 8 9 10 11 12 13 n,k = map(int,input().split()) li = [] for _ in range(n): li.append(int(input())) cnt = 0 li.sort(reverse=True) for coin in li: cnt += k//coin k =..
# 문제 링크 www.acmicpc.net/problem/1934 1934번: 최소공배수 두 자연수 A와 B에 대해서, A의 배수이면서 B의 배수인 자연수를 A와 B의 공배수라고 한다. 이런 공배수 중에서 가장 작은 수를 최소공배수라고 한다. 예를 들어, 6과 15의 공배수는 30, 60, 90등이 있 www.acmicpc.net # Soultion 유클리드호제법을 이용하여 최대공약수를 구한 뒤, 최소공배수를 구한다. 1 2 3 4 5 6 7 8 9 10 11 12 k = int(input()) for _ in range(k): a,b = map(int,input().split()) n1 = a n2 = b while n2!=0: temp = n1 n1 = n2 n2 = temp%n2 print(a*b/..
# 문제 링크 www.acmicpc.net/problem/2609 2609번: 최대공약수와 최소공배수 첫째 줄에는 입력으로 주어진 두 수의 최대공약수를, 둘째 줄에는 입력으로 주어진 두 수의 최소 공배수를 출력한다. www.acmicpc.net # Soultion 유클리드 호제법을 이용하여 최대공약수(GCD)와 최소공배수(LCM)을 구한다. GCD(a,b) = GCD(b, a%b) -> 두번째숫자가 0일때까지 진행하면 첫번째가 최대공약수가 된다. LCM(a,b) = a*b//GCD(a,b) 1 2 3 4 5 6 7 8 9 10 11 a,b = map(int,input().split()) n1 = a n2 = b #gcd while n2!=0: temp = n1 n1 = n2 n2 = temp%n2 pri..
# 문제 링크 www.acmicpc.net/problem/1037 1037번: 약수 첫째 줄에 N의 진짜 약수의 개수가 주어진다. 이 개수는 50보다 작거나 같은 자연수이다. 둘째 줄에는 N의 진짜 약수가 주어진다. 1,000,000보다 작거나 같고, 2보다 크거나 같은 자연수이고, 중복되 www.acmicpc.net # Soultion 약수에서 가장 큰 값과 작은 값을 곱하면 된다. 1 2 3 4 n = int(input()) li = list(map(int,input().split())) print(max(li)*min(li)) cs
# 문제 링크 www.acmicpc.net/problem/5086 5086번: 배수와 약수 각 테스트 케이스마다 첫 번째 숫자가 두 번째 숫자의 약수라면 factor를, 배수라면 multiple을, 둘 다 아니라면 neither를 출력한다. www.acmicpc.net # Soultion 각 경우에서 나누어 떨어지는지 확인하면 된다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 while (1): x,y = map(int,input().split()) if x==0 and y==0: break if xy and x%y==0: print("multiple") else: print("neither") cs
# 문제 링크 www.acmicpc.net/problem/11866 11866번: 요세푸스 문제 0 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 1,000) www.acmicpc.net # Soultion 데큐를 이용하여 문제를 풀었다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 from collections import deque n,k = map(int,input().split()) q = deque() for i in range(1,n+1): q.append(i) li = [] print("") cs 12. popleft() 함수를 사용하기 위해 k-1번째까지 숫자들을 큐의 마지막으로 넣음 13. k번째 숫자를 출력..
# 문제 링크 www.acmicpc.net/problem/2164 2164번: 카드2 N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가 www.acmicpc.net # Soultion collections에서 deque 불러오기 1 2 3 4 5 6 7 8 9 10 11 12 from collections import deque n = int(input()) q = deque() for i in range(1,n+1): q.append(i) while(len(q)!=1): q.popleft() # 제일 위 카드 버리기 q.append(q.popleft()) ..