본문 바로가기

백준36

[백준/파이썬] 17427 : 약수의 합 2 https://www.acmicpc.net/problem/17427 17427번: 약수의 합 2 두 자연수 A와 B가 있을 때, A = BC를 만족하는 자연수 C를 A의 약수라고 한다. 예를 들어, 2의 약수는 1, 2가 있고, 24의 약수는 1, 2, 3, 4, 6, 8, 12, 24가 있다. 자연수 A의 약수의 합은 A의 모든 약수를 더 www.acmicpc.net 문제 요약 : 자연수 A의 약수의 합은 f(A)이다. x보다 작거나 같은 모든 자연수 y의 f(y)값을 더한 값은 g(x)이다. 자연수 N이 주어졌을 때, g(N)을 구하라. 시도 ) # 약수의 합2 import sys input = sys.stdin.readline ans = 0 for number in range(1,int(input(.. 2023. 3. 27.
[백준/파이썬] 6549 : 히스토그램에서 가장 큰 직사각형 https://www.acmicpc.net/problem/6549 6549번: 히스토그램에서 가장 큰 직사각형 입력은 테스트 케이스 여러 개로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있고, 직사각형의 수 n이 가장 처음으로 주어진다. (1 ≤ n ≤ 100,000) 그 다음 n개의 정수 h1, ..., hn (0 ≤ hi ≤ www.acmicpc.net 문제 요약 : 히스토그램의 개수n과 높이를 나타내는 정수들이 주어졌다. n이 0이 나오기 전까지 히스토그램 내부에 가장 넓이가 큰 직사각형의 크기를 구해라. 히스토그램과 거의 똑같은 문제! 풀이 ) 풀이의 흐름 입력값 read를 받아 histogram함수에 넣어준다. read[0]은 직사각형의 개수 N read[1:]은 각 직사각형의 높이 .. 2023. 3. 24.
[백준/파이썬] 17612 : 쇼핑몰 https://www.acmicpc.net/problem/17612 17612번: 쇼핑몰 입력의 첫 줄에는 2개의 정수 N(1 ≤ N ≤ 100,000)과 k(1 ≤ k ≤ 100,000)가 주어진다. 다음 줄부터 N개의 줄에 걸쳐 고객 N명의 정보가 줄 맨 앞의 고객부터 맨 뒤 고객까지 순서대로 주어진다. i번째 www.acmicpc.net 문제 요약 : N명의 고객들이 줄을 서서 k개의 계산대를 이용한다. 이용하는 데에는 각 고객이 가지고 있는 물품의 개수만큼의 시간이 든다. 만약 두 고객이 동시에 계산을 끝냈다면, 가장 뒤에있는 계산대를 이용한 고객이 먼저 나갈 수 있다. 나간 고객들의 순서와 고객의 번호를 곱한 값을 모두 더하여 출력하라. 우선 순위 큐를 이용한 심화문제..! 우선 순위 큐에 대해.. 2023. 3. 23.
[백준/파이썬] 11000 : 강의실 배정 https://www.acmicpc.net/problem/11000 11000번: 강의실 배정 첫 번째 줄에 N이 주어진다. (1 ≤ N ≤ 200,000) 이후 N개의 줄에 Si, Ti가 주어진다. (0 ≤ Si < Ti ≤ 109) www.acmicpc.net 문제 요약 : 강의의 시간시간과 끝나는 시간이 주어진다. 모든 수업이 가능한 최소의 강의실 개수는? 그리디 알고리즘을 공부하다가 활동 선택문제의 예시를 찾다가 풀게 된 문제 내가 찾고자 했던 문제는 회의실이였어서, 처음에 문제를 잘못 읽고 접근 했었다.^^; 우선순위큐를 적절히 활용해야 했던 문제! 그리디 알고리즘과 우선순위 큐에 대한 내용은 요기에! 시도 ) 회의실 문제를 풀고, 유사한 문제겠지 하고 접근했다가 낭패를 봤다. 일단 내 생각의 .. 2023. 3. 20.
[백준/파이썬] 1655 : 가운데를 말해요 https://www.acmicpc.net/problem/1655 1655번: 가운데를 말해요 첫째 줄에는 백준이가 외치는 정수의 개수 N이 주어진다. N은 1보다 크거나 같고, 100,000보다 작거나 같은 자연수이다. 그 다음 N줄에 걸쳐서 백준이가 외치는 정수가 차례대로 주어진다. 정수는 -1 www.acmicpc.net 문제 요약 : 정수를 하나씩 외칠 때마다 말한 수 중에 중간값을 말해야한다. 만일 짝수라면 중간에 있는 두 수 중 작은 수를 말한다. 시도 ) N = int(input()) number = [] for i in range(1,N+1): number.append(int(input())) number.sort() if i % 2 == 0: # 짝수 print(min(number[(i/.. 2023. 2. 27.