ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [D3] SWEA 19113. 식료품 가게
    SWEA 2024. 4. 27. 07:12

    처음에 정말 헤맸다.

    정상가는 4의 배수니까

    4의 배수이면 무조건 정상가일테고

    응? 근데 할인가도 4의 배수인게 있네

    그러면 할인가는 정상가의 0.75배니까

    0.75로 나눠떨어지는 수야

    응? 근데 정상가도 얼마든지 0.75로 나눠질 수 있잖아

    이런 식으로 계속해서 헤매고 있다가 

    오름차순 배열이란 말에 딱! 하고 문제 풀이를 떠올렸다

     

    1. 접근 방식

    S[0]은 무조건 어떤 가격의 할인가고

    S[-1]은 무조건 어떤 가격의 정상가다!!

     

    이 사실을 안 순간,

    문제는 다 풀렸다.

    [아래 그림 참고하면 이해가 쉽다.]

    2. 디테일한 구현

    처음에는 리스트의 맨 처음값, 맨 마지막 값을 활용하여

    (할인가,정상가) 2쌍을 없애려했다.

    근데, 마지막에 1쌍이 남는 경우도 있기에

    원소를 4개씩 없애는 건 힘들었고,

    결국 2개씩 없애는 방식으로 문제 풀이에 성공한다

     

    .

    3. 코드 작성

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    if __name__=='__main__':
       # sys.stdin=open('input2.txt','r')   
        
        
        t=int(input()) ## 총 테스트 케이스 개수
        
        for tc in range(t):
           n=int(input()) ##상점의 품목 수
           res=[]
           s=list(map(int,input().split())) ## 오름차순 정렬 (할인가,정상가)
     
     
           while len(s)>0:
            og=(s[0]*4)//3 ##할인가와 그에 해당하는 정상가
            down=int(s[-1]*0.75##정상가와 그에 해당하는 할인가
            
            res.append(s.pop(0)) ##할인가 빼고
            s.remove(og) #할인가에 해당하는 정상가 빼고
           
     
           print(f'#{tc+1}',end=' ')
           for x in res:
               print(x,end=' ')
           print()
    cs

    'SWEA' 카테고리의 다른 글

    [D3] SWEA 18662. 등차수열 만들기  (0) 2024.04.27
    [D3] SWEA 19003. 팰린드롬 문제  (0) 2024.04.27
    [D3] SWEA 19185. 육십갑자  (0) 2024.04.27
    [D3] SWEA 20019. 회문의 회문  (0) 2024.04.27
    [D3] SWEA 20551. 증가하는 사탕 수열  (0) 2024.04.27
Designed by Tistory.