-
[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. 코드 작성
123456789101112131415161718192021222324if __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