본문 바로가기

백준 write-up/정렬 & 그리디

[백준] 욱제는 도박쟁이야!! : 14655번 - Python

728x90
반응형

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

 

14655번: 욱제는 도박쟁이야!!

첫째 줄에 동전의 수 N이 주어진다. (1 ≤ N ≤ 10,000) 둘째 줄에 욱제의 첫 번째 라운드의 N개 동전의 배열이 주어진다. 셋째 줄에 욱제의 두 번째 라운드의 N개 동전의 배열이 주어진다. 동전에 적

www.acmicpc.net

 

 

 

문제의 접근 방법

 

- 획득한 점수가 최대가 되려면 1라운드에서는 최댓값을 구해야하고 2라운드에서는 최솟값을 구해야 함.

 

- 1라운드: 모두 양수로 만들어주면 됨 / 2라운드: 모두 음수로 만들어주면 됨

   (1라운드 동전들의 합 - 2라운드 동전들의 합) = 1,2라운드 동전들에 적힌 숫자의 절댓값들의 합

 

- 동전을 뒤집을 수 있는 횟수가 무제한이라는 점 유념하기

 

 

 

내가 막혔던 부분

 

- 연속하는 3개의 동전을 어떤 방식으로 뒤집으면 좋을지에 대한 아이디어에서 막혔음 => but, 동전을 뒤집을 수 있는 횟수가 무제한이기 때문에 꼭 3개씩 짝지어서 뒤집지 않아도 된다는 것을 깨달음!

 

 

 

문제 풀이 방법

 

동전의 수 N, 첫 번째 라운드의 N개 동전의 배열 first, 두 번째 라운드의 N개 동전의 배열 second를 입력받기 -> 결국 fisrt와 second의 절댓값들의 합이 최대 점수이기 때문에 각 리스트들의 요소를 더한 값을 변수 sum에 누적해서 더해주기 -> 욱제가 이번 게임에서 획득할 점수인 sum을 출력하기!

 

 

 

소스코드

N = int(input())    # 동전의 수
first = list(map(int, input().split()))   # 1라운드 동전들
second = list(map(int, input().split()))  # 2라운드 동전들

sum = 0
for i in first:
    sum += abs(i)

for j in second:
    sum += abs(j)

print(sum)
728x90
반응형