파이썬 문제풀이/구현

[삼성 sw 파이썬] 19113 식료품 가게

ari0930 2024. 2. 25. 22:11

[삼성 sw 파이썬] 19113 식료품 가게

 

문제

식료품점 주인이 25% 할인된 가격으로 상점의 모든 품목을 판매하기로 하였다.

즉 각 품목은 정상 가격의 정확히 75%로 이며 모든 물건의 정상 가격은 4의 배수인 정수이고 

할인된 가격 역시 모두 정수이다.

 

가격표의 출력을 확인하기 위해서 프린터로 돌아와 보니, 공교롭게 프린터는 모든 물품의 할인가격과 정상가격을 한꺼번에 오름차순으로 정렬한 뒤 순서대로 출력하여 하나의 출력물 더미를 만들었습니다. 예를 들어, 정상가격이 20, 80, 100인 경우 할인가격은 15, 60, 75이며 프린터의 인쇄 출력 더미는 오름차순으로 정렬된 15, 20, 60, 75, 80, 100 가격표들로 구성됩니다.

 

입력

첫 줄 TC가 주어진다 

두 번째 줄부터 각 테스트 케이스의 내용이 주어진다

테스트 케이스의 첫 번째 줄은 품목수 N

테스트 케이의 두 번째 줄 프린터에서 인쇄한 2N개의 정수 pi가 오름 차순으로 주어진다

 

출력

각 테스트 케이스마다 한 줄씩 물건의 할인가격에 해당하는 N개의 정수를 오름차순으로 정렬하여 출력하라.

 

풀이

정상가격과 할인된 가격이 합친 데이터를 입력받은걸 리스트(array)로 만들어 데이터를 입력받는다 for문을 이용하여 array에 있던 값들을 0.75로 나누어 새로운 가격을 w에 저장한다 

-0.75로 나누어준 이유는 할인되기 전 가격 전으로 돌리기 위해 0.75로 나누어준다

 

w 가격이 리스트(array)에 있고 4로 나누어진다면 정답을 기록할 리스트에 0.75로 나누기 전 가격을 추가한다. 그리고 array에 w의 값을 -1로 만든다. for 문이 끝나면 정렬을 해서 출력한다 

- w값이 입력받은 리스트에 있고 4로 나누어진다면  그건 나누어주긴 전 원래 가격이 할인된 가격이라는 뜻임으로 원래 가격을 정답을 출력할 리스트에 넣으면 된다. 

-array에 w값을 -1로 만든 이유는 한번 나온 값을 중복으로 나오지 않게 하기 위해 가격 범위에 없는 수를 정해 집어넣어중복을 피할 수 있다.

코드

test=int(input())
for t in range(test):
    n=int(input())
    array=list(map(int,input().split()))
    price=[]
    for i in range(len(array)):
        w = float(array[i])/(0.75)
        if w in array:
            if w%4==0:
                price.append(array[i])
                a=array.index(w)
                array[a]=-1


    price.sort()
    print("#{} ".format(t+1),end="")
    print(" ".join(map(str,price)))

 

반응형