안경잡이 구루루

백준 2720 (세탁소 사장 동혁) [Python/파이썬] 본문

파이썬(Python)/문제풀이(백준,BaekJoon)

백준 2720 (세탁소 사장 동혁) [Python/파이썬]

구루루(gururu) 2023. 9. 1. 15:56
반응형

https://www.acmicpc.net/problem/2720

 

2720번: 세탁소 사장 동혁

각 테스트케이스에 대해 필요한 쿼터의 개수, 다임의 개수, 니켈의 개수, 페니의 개수를 공백으로 구분하여 출력한다.

www.acmicpc.net

 


나:

T = int(input())
final = []

for i in range(T):
  result=[]
  C = int(input())
  quarter = (C//25)
  left_q = C%25
  result.append(int(quarter))
  
  dime = (left_q//10)
  left_d = left_q%10
  result.append(int(dime))
  
  nickel = (left_d//5)
  left_n = left_d%5
  result.append(int(nickel))
  
  penny =(left_n//1)
  left_p = left_n%1
  result.append(int(penny))
  
  final.append(result)

for i in final:
  print(*i)

완성된 코드는 위와 같다.

 

(1)
T = int(input())
final = []

젤 처음 테스트 케이스 개수 T를 입력받는다. 즉 반복하기 위한 숫자를 받는다.

출력하기 쉽게 각각의 반복에 해당하는 경우를 리스트로 만들고  final 리스트에 넣어서 2중 리스트 구조를 만들려고 했다.

 

(2)
for i in range(T):
  result=[]
  C = int(input())
  quarter = (C//25)
  left_q = C%25
  result.append(int(quarter))
  
  dime = (left_q//10)
  left_d = left_q%10
  result.append(int(dime))
  
  nickel = (left_d//5)
  left_n = left_d%5
  result.append(int(nickel))
  
  penny =(left_n//1)
  left_p = left_n%1
  result.append(int(penny))
  
  final.append(result)

위에서 받은 입력값 T 만큼 반복을 진행하고

이때 각 반복에 해당하는 결과를 리스트에 담고자 result 변수를 선언했다. 반복할때마다 새로 선언되어 새로운 경우 반영함에 주목.

거스름돈을 나타내는 C는 정수로 이루어져 있기 때문에 이에 맞춰 쿼터, 다임, 니켈, 페니의 단위도 정수로 바꿔주었다.

쿼터, 다임, 니켈, 페니 순서대로 필요한 개수를 출력하기 위해 계산할 때도 같은 순서로 진행한다.

이때 각 순서의 앞에서 얻은 몫 값은 해당 단위의 개수에 해당하고 나머지는 그 다음 단위의 개수 계산에 영항을 미침에 주의.

그래서 쿼터, 다임에 해당하는 코드를 보면 C의 몫은 쿼터의 개수 , C의 나머지는 다임의 개수 계산에 영향을 미침

최종적으로 각 입력에 해당하는 결과값을 result에 담고 이를 final 리스트에 넣어 각

 

(3)
for i in final:
  print(*i)

결국 i 에는 final 리스트의 0번째 요소부터 차례대로 들어간다. 즉 , 각 테스트케이스에 해당하는 리스트 결과값을 반환한다.

이를 출력할 때  리스트를 의미하는 대괄호 [ ] 를 없애야 하기 때문에 Asterisk를 사용했다.

 

+) 위 애스터리스크(Asterisk) 에 대해 더 많은 내용은 아래 링크의 unpacking 역할 참고

https://velog.io/@insutance/%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EB%B3%84%ED%91%9C-Asterisk-%EC%9D%98-%EC%97%AD%ED%95%A0

 

 


다른사람:

https://ludere.tistory.com/56

n = int(input())

for _ in range(n):
	money = int(input())
	for i in [25, 10, 5, 1]:
		print(money//i, end=' ')
		money = money%i

완성된 코드는 위와 같다.

주목해야 할 부분은 for 반목문을 이중 중첩해서 보다 간결하게 코드 작성.

반응형