백준

백준 1026 문제풀이 [python]

ys.k 2023. 6. 23. 02:22

포스팅에 앞서 내용이 틀릴 수 있습니다.
해당 부분 지적 감사히 받습니다.

문제를 보자.

 

쉽다.

 

풀다가 어렵다고 생각했다.

import sys as s

memory = 0

n = int(s.stdin.readline())

a = list(map(int,s.stdin.readline().split()))
b = list(map(int,s.stdin.readline().split()))
c = [0]*(len(a))
d = b.copy()
a.sort()
for i in range(len(b)):
    val = b.index(max(b))
    c[val] = a[i]
    b[val] = 0


for i in range(len(a)):
    memory += c[i] * d[i]
   
print(memory)

코드가 정말 쓸데없이 길다.

 

아직 나의 파이썬 문법 부족과, 경험 부족이다.

 

하지만 오답이다.

 

아직까지도 모르겠다.

 

출력값은 테스트케이스를 모두 만족하고, 예외인 경우 또한 찾아내지 못하였다.

 

코딩 어렵다.

 

그래서 다른 사람이 작성한 코드를 보고 내 거와 퓨전 했다.

import sys as s

memory = 0

n = int(s.stdin.readline())

a = list(map(int,s.stdin.readline().split()))
b = list(map(int,s.stdin.readline().split()))

a.sort()
for i in range(n):
    memory += a[i] * b.pop(b.index(max(b)))
   
print(memory)

근데 솔직히 이 정도는 구현할 수 있었는데, 배열에서 pop이 되는지 몰랐다.

 

다음엔 죽었다.

 

배운 점

1. a = b 형식으로 배열을 복사했을 때, 추후 a 요소를 수정하면 b도 같이 수정된다.

    a = b.copy()로 복사하면 b 요소를 수정해도 a에 반영되지 않는다.

 

2. list에서 pop(index) 사용가능하다.