백준(Python) 풀이/그리디 알고리즘

백준(Python) 12034번 김인천씨의 식료품가게 (Large) 풀이

개발윗미 2021. 12. 15. 11:06

Python으로 구현한 12034번 김인천씨의 식료품가게 (Large) 문제 풀이입니다.

 

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

 

12034번: 김인천씨의 식료품가게 (Large)

입력의 첫 번째 라인(줄)은 테스트 사례의 케이스의 수 T를 나타냅니다. 이후의 라인은 T개의 테스트 케이스가 이어집니다. 각 테스트 케이스는 두 줄로 구성됩니다. 첫 번째 줄에는 INU 식료품가

www.acmicpc.net


t = int(input())
for tc in range(1, t + 1) :
  n = int(input())
  data = sorted(map(int, input().split()), reverse=True)
  result = []

  while data :
    price = data.pop()

    if price * 100//75 in data :
      result.append(str(price))
      data.remove(price * 100//75)

  print("Case #%d: %s" % (tc, " ".join(result)))

 

1. 가격을 입력받아 내림차순으로 정렬하여 data에 저장한다.

 

2. data 리스트의 원소가 빌 때까지 while문을 통해 반복수행하는데, 가장 먼저 원소를 하나 꺼내어 price에 할당한다.

 

3. price에 100//75 를 곱한 가격이 data 리스트에 존재할 경우 result 리스트에 price를 문자열로 변환하여 추가한다.

 

4. 또한, 다음 원소를 통한 조건확인이 원활하게 이루어질 수 있도록 data 리스트에서 price * 100//75 값을 제거한다.

 

5. 반복문이 종료되면 최종적으로 문제에서 요구하는 출력 형식에 맞추어 result 리스트 값들을 출력한다.