BOJ

문제 링크 https://www.acmicpc.net/problem/11399 11399번: ATM 첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000) www.acmicpc.net 문제 문제 풀이 최선으로 가장 적은 시간을 구해내기 위해서는 무조건 인출 시간이 짧은 사람이 먼저 와야 한다. 정렬을 통해 인출 시간이 짧은 순으로 나열하고 모든 인출시간을 더해준다. n = int(input()) arr = list(map(int, input().split())) arr.sort() result = 0 sum = 0 for i in arr: result += i sum += result print(..
문제 링크 https://www.acmicpc.net/problem/10610 10610번: 30 어느 날, 미르코는 우연히 길거리에서 양수 N을 보았다. 미르코는 30이란 수를 존경하기 때문에, 그는 길거리에서 찾은 수에 포함된 숫자들을 섞어 30의 배수가 되는 가장 큰 수를 만들고 싶어한 www.acmicpc.net 문제 문제 풀이 * 30의 배수의 조건 * 1) 각 자리수 값을 더했을 때 3의 배수가 되어야 한다 2) 일의 자리 수는 0이 되어야 한다 n = list(input()) n.sort(reverse=True) sum = 0 for i in n: sum += int(i) if sum % 3 != 0 or "0" not in n: print(-1) else: print(''.join(n))
문제 링크 https://www.acmicpc.net/problem/2875 2875번: 대회 or 인턴 첫째 줄에 N, M, K가 순서대로 주어진다. (0 ≤ M ≤ 100, 0 ≤ N ≤ 100, 0 ≤ K ≤ M+N), www.acmicpc.net 문제 문제 풀이 while을 이용한 조건문을 이용한 풀이이다. 여학생 2명, 남학생 1명으로 팀이 꾸려지고, 여학생과 남학생을 합친 수는 팀을 꾸릴 수 있는 3명에 인턴십 인원 K까지 포함되어야 한다. 이 조건까지 while문을 돌려 팀 수를 도출한다. N, M, K = map(int, input().split()) result = 0 while N >= 2 and M >= 1 and N + M >= K + 3: N -= 2 M -= 1 result +=..
문제 링크 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 문제 문제 풀이 남은 금액에 대해 나눌 수 있는 가장 큰 금액을 더해나가는 간단한 풀이이다. n, k = map(int, input().split()) m = [] num = 0 for i in range(n): m.append(int(input())) for i in range(n - 1, -1, -1): if k == ..
문제 링크 https://www.acmicpc.net/problem/11728 11728번: 배열 합치기 첫째 줄에 배열 A의 크기 N, 배열 B의 크기 M이 주어진다. (1 ≤ N, M ≤ 1,000,000) 둘째 줄에는 배열 A의 내용이, 셋째 줄에는 배열 B의 내용이 주어진다. 배열에 들어있는 수는 절댓값이 109보다 작거 www.acmicpc.net 문제 문제 풀이 import sys N, M = map(int, sys.stdin.readline().split()) a = list(map(int, sys.stdin.readline().split())) b = list(map(int, sys.stdin.readline().split())) result = a + b print(' '.join(map..
문제 링크 https://www.acmicpc.net/problem/10815 10815번: 숫자 카드 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10, www.acmicpc.net 문제 문제 풀이 처음에 순차탐색으로 풀었더니 시간 초과가 나왔다. 이진탐색으로 코드를 수정하니 답을 맞힐 수 있었다. import sys # 가지고 있는 카드 개수 N = int(sys.stdin.readline()) # 가지고 있는 카드 숫자 cards = list(map(int, sys.stdin.readline().split())) # 검사해야 할 카..
문제 링크 https://www.acmicpc.net/problem/2110 2110번: 공유기 설치 첫째 줄에 집의 개수 N (2 ≤ N ≤ 200,000)과 공유기의 개수 C (2 ≤ C ≤ N)이 하나 이상의 빈 칸을 사이에 두고 주어진다. 둘째 줄부터 N개의 줄에는 집의 좌표를 나타내는 xi (0 ≤ xi ≤ 1,000,000,000)가 www.acmicpc.net 문제 문제 풀이 이진 탐색을 통해 풀이를 했다. 입력받은 집의 위치에 대해 먼저 정렬을 진행하고, 이진 탐색에 대한 끝점을 제일 긴 거리로 처음에 두어 이진탐색을 진행한다. 변수 current는 공유기를 둔 위치를 나타낸다. import sys N, C = map(int, sys.stdin.readline().split()) house..
문제 링크 https://www.acmicpc.net/problem/2805 2805번: 나무 자르기 첫째 줄에 나무의 수 N과 상근이가 집으로 가져가려고 하는 나무의 길이 M이 주어진다. (1 ≤ N ≤ 1,000,000, 1 ≤ M ≤ 2,000,000,000) 둘째 줄에는 나무의 높이가 주어진다. 나무의 높이의 합은 항상 M보 www.acmicpc.net 문제 문제 풀이 이분 탐색으로 푸는 문제이다. 시작점을 1, 끝점을 입력받은 len의 최댓값으로 두고 mid를 구하여 len에서 뺀 값을 모두 더하는 것으로 상근이가 얻을 수 있는 길이를 구한다. 이 때, 주의해야 할 점은 나무의 길이가 중간값보다 길 때만 빼야한다는 것이다. 이 조건문을 빼놓으면 마이너스 값도 얻을 수 있는 값을 더할 때 포함되므..
YOONJELLY
'BOJ' 태그의 글 목록 (2 Page)