-
3060. [Python]욕심쟁이 돼지Python_알고리즘/Silver V 2023. 7. 24. 18:41
1. 문제
https://www.acmicpc.net/problem/3060
3060번: 욕심쟁이 돼지
입력은 T개의 테스트 데이터로 구성된다. 입력의 첫 번째 줄에는 입력 데이터의 수를 나타내는 정수 T가 주어진다. 각 테스트 데이터는 두 줄로 구성되어 있고, 첫째 줄에는 하루에 배달되는 사
www.acmicpc.net
2. 접근 방법
- 시간 제한: 1초
- 메모리 제한: 128MB
- 구현
- 수학
3. 파이썬 코드
T = int(input()) for i in range(T): # 하루 식사 제한 day_meal = int(input()) # 돼지들의 총 식사 pig_meal = list(map(int,input().split())) # 일수 cnt = 1 # 만약 초기 값이 하루 식사치를 넘었을 경우 if sum(pig_meal) > day_meal: pass # 그 외의 경우 else: # 하루치 식사보다 작거나 같을때까지 반복 while sum(pig_meal) <= day_meal: # 홀수 합 odd_total = 0 # 짝수 합 even_total = 0 # 짝수 합과 홀수 합을 더하는 식 for j in range(1,7): if j % 2 == 0: even_total += pig_meal[j-1] else: odd_total += pig_meal[j-1] # 각각의 자리에서 홀수 합과 짝수 합을 더해서 다시 넣음 for k in range(6): if k % 2 == 0: pig_meal[k] += even_total else: pig_meal[k] += odd_total # 다음날로 넘어가기 때문에 cnt 증가 cnt += 1 print(cnt)
4. 문제를 풀고난 후 생각
- 처음 구현했던 방식은 각 인덱스 별로 값을 더해주는 식이였는데 그러다 보니 고려할 사항이 많아서 문제를 생각해보니 각 인덱스별 더해주는 위치는 고정이였단 것 을 깨달았다.
- 각 돼지의 홀, 짝 위치에 따라서 더하는 값이 같다는 방법을 생각해낸 후 돼지들의 식사량을 홀, 짝에 나눠서 값을 구해뒀다.
- 처음 input 으로 들어온 경우만 예외 처리를 진행한 후 그 이후는 while 문을 통해서 하루 식사량 값을 조건으로 걸어서 총 몇일이 걸린지 체크를 해주는 식으로 정리를 하였다.
- 반복문을 통해서 하루 하루 지나며 전날의 돼지가 먹는 양에 고정된 홀, 짝 에 따른 값을 더해주고 그 홀, 짝의 값들을 최신값으로 갱신해줬다.
5. 문제를 푸는데 도움이 되는 지식
- 구현
- 수학
'Python_알고리즘 > Silver V' 카테고리의 다른 글
14655. [Python]욱제는 도박쟁이야!! (0) 2025.01.02 2828. [Python]사과 담기 게임 (0) 2023.07.13 10826. [Python]피보나치 수 4 (0) 2023.05.17 4096. [Python]팰린드로미터 (0) 2023.04.26 1769. [Python]3의 배수 (0) 2023.04.26