섭스토리
백준 2010번 <플러그> 본문
백준 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 |