[백준 BOJ] 13866번 팀 나누기 (C++/cpp)

2022. 10. 4. 14:11PS (Program Solving)/BOJ (백준)

문제 설명

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

 

13866번: 팀 나누기

입력은 네 개의 정수 A, B, C 및 D가 포함된 한 줄로 구성되며 4명의 스킬 레벨이 주어진다. (0 ≤ A ≤ B ≤ C ≤ D ≤ 104)

www.acmicpc.net

백준 BOJ 13866번 팀 나누기 문제 사진

 

접근 방법 - 사칙연산의 기본 문제

백준의 13866번 문제는 사칙연산에 있어 기초적인 연산으로 해결해야 하는 문제이다.

해당 문제는, 4명을 두 팀으로 나누었을 때 팀 간의 최소 격차를 연산하여 출력해야 하는 문제이다.

필자는 스킬 레벨이 가장 낮은 사람과 가장 높은 사람이 한 팀을 이루고 나머지 2명이 한 팀을 이루는 경우가 두 팀 간의 격차가 가장 작은 경우일 것이라 생각하였다.

입력값 상에서 이미 정렬이 되어있기 때문에 사칙연산에 대한 코드만 잘 작성하면 쉽게 해결할 수 있는 문제일 것이다.

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

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

 

코드의 실행 순서

1) 입력값 4개(a, b, c, d)를 순차적으로 입력받는다.

 

2) a와 d를 한 팀으로 하고, b와 c를 한 팀으로 이루게끔 하여 격차를 연산하려 한다.

따라서 a+d에 b+c를 빼도록 연산을 취하도록 하고, 이 값을 변수 result를 선언하면서 저장하도록 한다.

이때, 만일 result의 값이 음수로 나왔다면 양수로 변환하도록 한다. 격차를 구하는 것이기 때문에 양수로 출력하게끔 해야 한다.

 

3) 연산이 완료된 result의 값을 출력한 뒤, 실행 종료한다.

반응형

 

성공한 코드

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

//백준 13866번 코드
int main() {
	ios::sync_with_stdio(false);
	cin.tie(NULL);	cout.tie(NULL);
	
	int a, b, c, d;
	cin >> a >> b >> c >> d;

	int result = (a + d) - (b + c);
	if (result < 0) { result *= -1; }
	cout << result << endl;
}

 

제출 결과

백준 BOJ 13866번 팀 나누기 문제 C++ 제출 결과

(2022.08.14 백준 13866번 문제 제출 결과)

반응형