[백준 BOJ] 2010번 플러그 (C++/cpp)

2026. 3. 2. 15:15PS (Program Solving)/BOJ (백준)

문제 설명

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

 

백준 BOJ 2010번 플러그 문제 사진

 

접근 방법 - 기초적인 사칙연산 문제

백준의 2010번 문제는 기초적인 사칙연산을 활용하여 비교적 간단하게 해결할 수 있는 문제이다.

해당 문제는, 멀티탭의 개수와 각 멀티탭의 콘센트 수가 입력으로 주어질 때 최대한 많은 컴퓨터를 연결하는 데에 활용할 수 있는 콘센트의 개수를 구하여 출력하면 되는 문제이다.

이때, 집에 있는 콘센트가 하나뿐이라는 점을 전제로 하여, 컴퓨터 전원 연결은 반드시 멀티탭을 이용해 연결해야 한다.

 

멀티탭을 모두 활용하여 최대한 많은 컴퓨터의 전원을 연결해야 하기 때문에, 멀티탭끼리 연결하여 모든 멀티탭으로 전력을 끌어오는 것까지 함께 고려해야 한다.

따라서 필자는, 멀티탭의 콘센트 수를 모두 합하되 멀티탭끼리 연결하는 데에 활용되는 콘센트 수만큼은 감산하도록 하여 정답을 구해보았다.

보다 자세한 설명은 아래에 기재해 놓으니, 혹여나 해당 문제를 해결하는 데에 어려움을 겪고 있다면 아래의 설명과 코드를 참고해 보길 바란다.

필자는 아래의 순서대로 코드를 작성하여 문제를 해결하였다.

 

코드의 실행 순서

1) 멀티탭의 개수(n)를 입력받는다.

 

2) 컴퓨터 전원 연결에 활용할 수 있는 콘센트의 총 개수를 저장할 변수 sum을 0으로 초기화하여 선언해 둔다.

 

3) n의 크기만큼, 반복문을 수행하여 아래의 연산을 취한다.

- 각 멀티탭의 콘센트 수(num)를 하나씩 입력받는다.

- 앞서 선언한 sum에 현재의 num값을 더해주도록 한다.

- 첫 번째 입력이 아니라면, 해당 멀티탭은 다른 멀티탭과 연결하여 전력을 끌어오는 데에 콘센트를 하나 활용해야 한다.

따라서 이 경우에 해당된다면, sum에 대해 1을 빼주도록 한다.

(첫 번째 입력에 한하여 예외를 둘 필요는 없으나, 전력을 끌어오는 데에 콘센트가 소모되는지에 대한 여부는 판별해 가며 연산을 수행해야 한다.)

 

4) 연산이 완료되었다면, 최종적으로 저장된 sum값을 정답으로 출력한 뒤 실행을 종료한다.

반응형

 

성공한 코드

#define _CRT_SECURE_NO_WARNINGS
#pragma warning(disable: 4996)
#include <iostream>
#define endl '\n'
using namespace std;

//백준 2010번 코드
int main() {
	ios::sync_with_stdio(false);
	cin.tie(NULL);	cout.tie(NULL);

	int n;
	cin >> n;

	int sum = 0;
	for (int i = 0; i < n; i++) {
		int num;
		cin >> num;

		sum += num;
		if (i != 0) {
			sum--;
		}
	}

	cout << sum << endl;
}

 

제출 결과

백준 BOJ 2010번 플러그 문제 C++ 제출 결과

(2022.10.24 백준 2010번 문제 제출 결과)