[백준] 14655번 : 욱제는 도박쟁이야!!(파이썬)

뚝딱이 공학도·2022년 3월 6일
0

문제풀이_백준

목록 보기
79/160



문제



나의 답안

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개의 동전을 뒤집음 동전을 뒤집는 횟수에 제한은 없다.
    따라서 값이 최대, 최소가 될 때까지 동전을 뒤집을 수 있다.
  • 높은 점수를 받기 위해서는 두 라운드 전부 절댓값을 구해주면 된다.

  1. mx는 첫번째 라운드의 동전을 저장, mn는 두번째 라운드의 동전을 저장하는 배열이다.
  2. 최대 합과 최소의 합을 저장할 변수 sm,sn을 초기화해준다.
  3. 반복문을 통해 mx,mn의 인자에 순차적으로 접근하고 abs함수로 해당 값을 절댓값으로 만든 후 sm, sn에 저장해준다.
  4. sn이 음수라고 생각하고, (음수)*(음수)는 양수가 되므로 sm과 sn을 더해서 값을 구해준다.

0개의 댓글