섭스토리

백준 2010번 <플러그> 본문

백준 풀이 🍪

백준 2010번 <플러그>

섭웨이 2022. 8. 10. 21:34

백준 2010번 <플러그>

브론즈 3

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

 

2010번: 플러그

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

www.acmicpc.net

<script>
    let fs = require('fs');
    let input = fs.readFileSync('/dev/stdin').toString().split('\n');

    let res = 0;

    for (let i = 1; i < input.length; i++) {
        res += Number(input[i]);
    }

    console.log(res - input[0] + 1);

</script>

규칙만 알면 간단했던 문제입니다.

 

플러그 N개는 꽂는 방식에 상관없이 N개의 플러그 각각에 꽂을 수 있는 n1, n2 값을 다 더하고, N 을 빼주고 1을 더해주면 

연결 가능한 컴퓨터의 개수가 나옵니다.

 

(예를 들어, 각각 6개, 2개, 5개 씩 꽂을 수 있는 플러그 3개는 --> 6 + 2 + 5 - 3 +1 = 11개의 컴퓨터 연결 가능)

 

특별한 건 없었구요.

다른 분이 작성하신 코드를 살펴보았습니다.

 

const [n, ...plugs] = require('fs').readFileSync('/dev/stdin').toString().trim().split('\n').map(Number);
console.log(plugs.reduce((acc, cur) => acc +cur, 0) + 1 - n);

입력값을 받을 때 배열을 선언하고 index 0 값을 n으로 받고 나머지는 배열의 전개 연산자(...)를 사용하여 할당해줍니다. 

--> 다음 번에 써먹도록 하겠습니다.

 

Map(Number)를 사용하여 요소들을 숫자형으로 바꿔주었구요.

 

처음 플러그 개수(n)를 제외한 배열 plugs 에 대해 reduce()를 사용해 acc에다가 현재 요소 값(cur)을 더하는 콜백함수를 선언해줍니다. (초기값 0)

 

그럼 배열의 모든 요소를 더한 값이 반환되고 그 값에 1을 더해주고 n을 빼준 값을 출력합니다.

 

다른 분들 푸신 걸 쭉 보니깐 대부분 reduce() 를 사용하셨더라구요...!

 

앞으로 배열의 요소들을 더할 때는 reduce()를 사용해보도록 하겠습니다.

'백준 풀이 🍪' 카테고리의 다른 글

백준 1152번 <단어의 개수>  (0) 2022.08.13
백준 1076번 <저항>  (0) 2022.08.12
백준 1075번 <나누기>  (0) 2022.08.11
백준 1703번 <생장점>  (0) 2022.08.09
백준 1284번 <집 주소>  (1) 2022.08.09