본문 바로가기
알고리즘/SWEA

SWEA D3 19113. 식료품 가게 (python)

by 개발하는 호랑이 2024. 1. 30.

식료품 가게

풀이

할인 가격과 할인 전 가격이 같이 있는 리스트에서 할인 가격만을 추출해 내야 하는 문제이다.
오름차순으로 정렬해서 제공해주지만, 내가 풀이하는 방식으로는 내림차순으로 정렬해서 풀어야 문제가 풀리기에 재정렬을 해주었다.
풀이 계획은 아래와 같다.

  1. 내림차순으로 재정렬
  2. while문을 시행. 할인 가격 즉, 0.75를 곱한 가격이 리스트에 있으면, 해당 인덱스를 찾아내서 pop()을 시행 후 answer 리스트에 입력
  3. 0.75를 곱한 가격이 리스트에 없으면 그것이 할인 가격이므로 해당 인덱스를 pop(), answer 리스트에 입력.
  4. 2와 3의 과정이 모두 끝난 후 answer는 내림차순으로 정렬되어 있는 리스트이므로, 이를 오름차순으로 형식에 맞게 출력하기 위해 for문 및 print(end=' ')를 이용.
T = int(input())
for testcase in range(1, T+1):
    N = int(input())
    a_list = sorted(list(map(int,input().split())), reverse=True)
    i = 0
    answer = []
    while N < len(a_list):
        if a_list[i] * 0.75 in a_list:
            tmp_i = a_list.index(a_list[i] * 0.75)
            tmp = a_list.pop(tmp_i)
            answer.append(tmp)
            i += 1
        else:
            answer.append(a_list[i])
            a_list.pop(i)
    print(f'#{testcase}', end=' ')
    for i in range(len(answer)-1, -1, -1):
        print(f'{answer[i]}', end=' ')
    print()