문제
나의 답안
n=int(input())
mx=list(map(int,input().split()))
mn=list(map(int,input().split()))
sm,sn=0,0
for i in mx:
sm+=abs(i)
for i in mn:
sn+=abs(i)
print(sm+sn)
접근 방법
문제에서 주목해야 할 부분은 다음과 같다
- 첫 번째 라운드에서는 동전에 표시된 값들의 합이 최대가 되도록 뒤집어야 하고
두 번째 라운드에서는 동전에 표시된 값들의 합이 최소가 되도록 뒤집어야 한다
- 플레이어의 점수 : (첫 번째 라운드 동전 값의 합) - (두 번째 라운드 동전 값의 합)
- 연속된 3개의 동전을 뒤집음 동전을 뒤집는 횟수에 제한은 없다.
따라서 값이 최대, 최소가 될 때까지 동전을 뒤집을 수 있다.
- 높은 점수를 받기 위해서는 두 라운드 전부 절댓값을 구해주면 된다.
- mx는 첫번째 라운드의 동전을 저장, mn는 두번째 라운드의 동전을 저장하는 배열이다.
- 최대 합과 최소의 합을 저장할 변수 sm,sn을 초기화해준다.
- 반복문을 통해 mx,mn의 인자에 순차적으로 접근하고 abs함수로 해당 값을 절댓값으로 만든 후 sm, sn에 저장해준다.
- sn이 음수라고 생각하고, (음수)*(음수)는 양수가 되므로 sm과 sn을 더해서 값을 구해준다.