본문 바로가기

python/백준_프로그래머스

[백준 1026번] 보물 python과 리스트 정리

728x90

https://www.acmicpc.net/problem/1026

 

1026번: 보물

첫째 줄에 N이 주어진다. 둘째 줄에는 A에 있는 N개의 수가 순서대로 주어지고, 셋째 줄에는 B에 있는 수가 순서대로 주어진다. N은 50보다 작거나 같은 자연수이고, A와 B의 각 원소는 100보다 작거

www.acmicpc.net

<조건>

  • 입력 2개 리스트의 개수 N
  • 입력 A의 리스트 N개 입력
  • 입력 B의 리스트 N개 입력 
  • 출력 함수의 식이 가장 적게 나오는 A의 순서 (단, B는 재정렬 하면 안 됨)
#입력
N=int(input())
A=list(map(int, input().split()))
B=list(map(int, input().split()))
A.sort()   #정렬

#함수 S 구현
result=0
for i in range(N):
  b=max(B)
  result+=A[i]*b
  B.remove(b)

#출력
print(result)

 


 

 굉장히 간단한 알고리즘이다. 처음에는 다음과 같이 풀면서 대강의 알고리즘을 생각했다. 

 

그리고 굳이 정렬을 하지 않아도  풀 수 있는 문제.


 파이썬 리스트 문법을 많이 까먹었다. 

 

  • 정렬
A.sort() #기본 오름차순
A.sort(reverse=True) #기본 내림차순

 

  • 원소 추가/제거하기
추가하기 제거하기
a.append(값) a.remove(값)
a.extend(리스트) a.pop(인덱스) 인덱스 지정을 안 해주면 맨 뒤 원소가 제거됨
a.insert(인덱스, 값) del a[인덱스]

 

  • 가장 큰 수/작은 수 찾기
#내가 실수한 코드
b=B.max()

#원래 코드
b=max(B)

 

 

  • .은 메소드로서 특정 객체에 적용되는 함수이다.(참고로 파이썬에서는 모든 것이 객체다.)
  • ()는 내장 함수로서 python 자체에서 제공하는 함수이다. 

 

 주피터 환경에서는 . + tap을 하면 해당 객체의 내장함수가 뜨니까 실험해보면서 익숙해지면 될 것 같다.