728x90
반응형
안녕하세요. 지난 포스팅의 BOJ 2775번 : 부녀회장이 될테야에서는 이차원 배열과 이중반복문을 이용해서 문제를 풀어보았습니다. 오늘도 조금 생각을 해야하는 문제를 풀어보도록 하죠.
완벽한 코딩은 존재하지 않습니다. 제가 제출한 코드 역시 마찬가지고 그저 참고만 해주시길 바랍니다.
핵심 포인트
- 기본 구현능력
제출 코드
N = int(input())
if N % 5 == 0 : print(N // 5)
else :
cnt = 0
while True :
N -= 3
cnt += 1
if N % 5 == 0 :
print(cnt + N // 5)
break
elif N < 3 :
print(-1)
break
해설
입력 형식은 무게 $N$이 정수형으로 입력됩니다. 그리고 문제의 목적은 3Kg/5Kg 봉투를 최소한으로만 사용해서 $N$Kg을 분배하는 것이죠. 만약, 분배되지 않는다면 -1을 출력하면 됩니다. 저는 이 문제를 풀기 위해서 다중 조건문을 사용했습니다. 일단, 첫번째로 주어진 무게 $N$이 5Kg짜리 봉투로만 바로 분배가능하다면 이는 최소한의 봉투의 개수이기 때문에 그대로 N // 5을 출력해주면 됩니다.
다음으로 신경쓰면 될 것은 $N$이 5Kg짜리 봉투로 나누어 떨어지지 않을 때 입니다. 이 경우에는 3Kg짜리 봉투를 하나씩 써가면서 남은 무게가 5Kg짜리 봉투로 나누어 떨어지게 되면 기존에 3Kg짜리 봉투를 사용했던 개수에 N // 5를 더해서 출력해주면 됩니다. 만약, 계속 3Kg짜리 봉투를 썻음에도 남은 봉투의 무게가 3Kg보다 작아지게 되면 이는 답이 없다는 뜻이기 때문에 -1을 출력해주면 되죠.
참고자료 및 그림출처
728x90
반응형
'Programming > Coding Problem' 카테고리의 다른 글
BOJ 2581번 : 소수 (0) | 2022.07.14 |
---|---|
BOJ 1978번 : 소수 찾기 (0) | 2022.07.13 |
BOJ 2775번 : 부녀회장이 될테야 (0) | 2022.07.11 |
BOJ 10250번 : ACM 호텔 (0) | 2022.07.10 |
BOJ 2869번 : 달팽이는 올라가고 싶다 (0) | 2022.07.09 |