Koala - 15기/기초 알고리즘 스터디

[백준/Python] 2010번: 플러그

sori_lee 2024. 7. 8. 14:08

문제

선영이의 집에는 콘센트를 꽂을 수 있는 플러그가 하나밖에 없다. 선영이는 많은 컴퓨터를 가지고 있는데, 컴퓨터의 전원 문제는 어떻게 해결하는 것일까?

하나의 플러그가 있고, N개의 멀티탭이 있다. 각 멀티탭은 몇 개의 플러그로 이루어져 있다고 한다. 최대 몇 대의 컴퓨터를 전원에 연결할 수 있을까?

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

 

입력

첫째 줄에 멀티탭의 개수 N이 주어진다. (1 ≤ N ≤ 500,000) 이어서 둘째 줄부터 N개의 줄에 걸쳐 각 멀티탭이 몇 개의 플러그를 꽂을 수 있도록 되어 있는지를 나타내는 자연수가 주어진다. 이 자연수는 1,000을 넘지 않는다.

출력

첫째 줄에 최대로 전원에 연결될 수 있는 컴퓨터의 수를 출력한다.


풀이 했던 방법

'여러 입력을 받는 문제'

이 문제를 풀기 전까지는 while 문이나 for문 안에 입력을 통해 여러줄의 입력을 받게 하며 문제를 풀곤 했었습니다.

기존 방식처럼 풀다가 코드가 너무 복잡해져서 이 문제 부터는 파이썬의 sys모듈을 사용하여 풀었습니다.

밑의 코드 풀이는

입력 처리 -> 멀티탭의 각 플러그 수들을 추출하고 -> 플러그 총합을 계산한다음

-> 플러그에 연결할 수 있는 컴퓨터의 총 수는 -(n+1)이기에 플러그 총합에서 빼줍니다.

어찌보면 단순한 문제였는데 list 코드를 짜는게 익숙치 않아 고전했습니다. 

 

Code

import sys

input = sys.stdin.read

data = input().split()
n = int(data[0])

plug = list(map(int, data[1:n+1]))

sumplug = sum(plug)

print(sumplug - n + 1)