728x90

문제

서로 다른 N개의 자연수의 합이 S라고 한다. S를 알 때, 자연수 N의 최댓값은 얼마일까?

입력

첫째 줄에 자연수 S(1 ≤ S ≤ 4,294,967,295)가 주어진다.

출력

첫째 줄에 자연수 N의 최댓값을 출력한다.

코드

s = int(input())
n = 1
while n*(n+1)/2<=s:
    n+=1
print(n-1)

풀이

1부터 n까지의 합 공식 : n*(n+1)/2

최대값을 구해야 하니, 1부터 차례대로 더해줘서 s보다 커질 때 -1 해주면 된다.

 

'알고리즘 문제 풀이 > 백준' 카테고리의 다른 글

[백준] 1439 뒤집기 python  (0) 2022.02.10
[백준] 1946 신입사원 python  (0) 2022.02.10
[백준] 13305 주유소 python  (0) 2022.02.09
[백준] 10610 30 python  (0) 2022.02.09
[백준] 2217 로프 python  (0) 2022.02.08
728x90

문제

어느 날, 미르코는 우연히 길거리에서 양수 N을 보았다. 미르코는 30이란 수를 존경하기 때문에, 그는 길거리에서 찾은 수에 포함된 숫자들을 섞어 30의 배수가 되는 가장 큰 수를 만들고 싶어한다.

미르코를 도와 그가 만들고 싶어하는 수를 계산하는 프로그램을 작성하라.

입력

N을 입력받는다. N는 최대 105개의 숫자로 구성되어 있으며, 0으로 시작하지 않는다.

출력

미르코가 만들고 싶어하는 수가 존재한다면 그 수를 출력하라. 그 수가 존재하지 않는다면, -1을 출력하라.

코드

s = list(input())
s.sort(reverse=True)
sum = 0
for i in s:
    sum+=int(i)
if sum % 3 ==0 and '0' in s:
    print(''.join(s))
else:
    print(-1)

풀이

30의 배수 조건

1. 1의 자리가 0

2. 각 자리 숫자의 합이 3의 배수

 

이 두가지 조건을 만족시키면서 가장 큰 30의 배수를 출력해야하니까 내림차순 정렬해줬다.

'알고리즘 문제 풀이 > 백준' 카테고리의 다른 글

[백준] 1439 뒤집기 python  (0) 2022.02.10
[백준] 1946 신입사원 python  (0) 2022.02.10
[백준] 13305 주유소 python  (0) 2022.02.09
[백준] 1789 수들의 합 python  (0) 2022.02.09
[백준] 2217 로프 python  (0) 2022.02.08
728x90

문제

N(1 ≤ N ≤ 100,000)개의 로프가 있다. 이 로프를 이용하여 이런 저런 물체를 들어올릴 수 있다. 각각의 로프는 그 굵기나 길이가 다르기 때문에 들 수 있는 물체의 중량이 서로 다를 수도 있다.

하지만 여러 개의 로프를 병렬로 연결하면 각각의 로프에 걸리는 중량을 나눌 수 있다. k개의 로프를 사용하여 중량이 w인 물체를 들어올릴 때, 각각의 로프에는 모두 고르게 w/k 만큼의 중량이 걸리게 된다.

각 로프들에 대한 정보가 주어졌을 때, 이 로프들을 이용하여 들어올릴 수 있는 물체의 최대 중량을 구해내는 프로그램을 작성하시오. 모든 로프를 사용해야 할 필요는 없으며, 임의로 몇 개의 로프를 골라서 사용해도 된다.

입력

첫째 줄에 정수 N이 주어진다. 다음 N개의 줄에는 각 로프가 버틸 수 있는 최대 중량이 주어진다. 이 값은 10,000을 넘지 않는 자연수이다.

출력

첫째 줄에 답을 출력한다.

코드

n = int(input())
rope = []
result = []
for i in range(n):
    rope.append(int(input()))
    
rope.sort(reverse=True)
for i in range(n):
    result.append((i+1)*rope[i])
print(max(result))

풀이

그리디 알고리즘이다.

최대 중량을 구해야하므로 내림차순 정렬을 하고, n번째로 큰 중량을 n번 곱하면 된다.

rope[n]*n번째 라는 식으로 중량들을 result에 저장하고

result중 max값을 출력하면 최대 중량을 구할 수 있다.

 

'알고리즘 문제 풀이 > 백준' 카테고리의 다른 글

[백준] 1439 뒤집기 python  (0) 2022.02.10
[백준] 1946 신입사원 python  (0) 2022.02.10
[백준] 13305 주유소 python  (0) 2022.02.09
[백준] 1789 수들의 합 python  (0) 2022.02.09
[백준] 10610 30 python  (0) 2022.02.09

+ Recent posts