2025. 5. 11. 16:44ㆍPS (Program Solving)/BOJ (백준)
문제 설명
https://www.acmicpc.net/problem/22015


접근 방법 - 기초적인 사칙연산 활용 문제
백준의 22015번 문제는 사칙연산을 활용하여 비교적 쉽게 해결할 수 있는 문제이다.
해당 문제는, 세 사람이 먹은 별사탕의 개수가 입력으로 주어질 때 3명이 먹은 별사탕의 개수를 동일하게 하기 위해 추가로 먹어야 하는 별사탕 개수의 총합을 구하여 출력하면 되는 문제이다.
해당 문제의 지문이 한글로 적혀있지 않아 해석본이 적힌 링크를 아래에 기재해 놓으니, 해결할 시 함께 참고하면 되겠다.
https://www.acmicpc.net/board/view/85824
필자는 가장 많이 먹은 입력값을 기준으로 하여, 나머지 두 데이터 간의 각 차잇값을 더하여 정답을 출력하게끔 하였다.
예제 1번에 빗대어 이야기하자면, 입력값들 중 9가 가장 크기 때문에 (9-4)+(9-6)인 8이 정답으로 나올 수 있는 것이다.
자세한 설명은 아래에 기재해 놓으니, 혹여나 해당 문제를 해결하는 데에 어려움을 겪고 있다면 아래의 설명과 코드를 참고해 보길 바란다.
필자는 아래의 순서대로 코드를 작성하여 문제를 해결하였다.
코드의 실행 순서
1) 3개의 입력값을 저장할 배열 candy를 미리 선언해 둔다.
2) candy의 값을 순차적으로 입력받고, 입력이 종료되는 대로 sort()를 통하여 candy의 값들을 정렬한다.
이때, 연산의 편의성을 위해 compare를 별도로 구성하여 값들을 내림차순 정렬이 되게끔 설정하였다.
3) sum 변수를 선언하고, 가장 큰 값(candy[0])을 기준으로 나머지 두 개의 사탕 수와의 차이를 연산하여 이들의 합으로 변숫값을 초기화하도록 한다.
4) 3)에서 저장된 sum 값을 정답으로 출력한 뒤, 실행을 종료한다.
성공한 코드
#define _CRT_SECURE_NO_WARNINGS
#pragma warning(disable: 4996)
#include <iostream>
#include <algorithm>
#define endl '\n'
using namespace std;
//백준 22015번 코드
bool compare(int a, int b) {
return a > b;
}
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL); cout.tie(NULL);
int candy[3];
for (int i = 0; i < 3; i++) {
cin >> candy[i];
}
sort(candy, candy + 3, compare);
int sum = candy[0] * 2 - (candy[1] + candy[2]);
cout << sum << endl;
}
제출 결과

(2024.07.03 백준 22015번 문제 제출 결과)
'PS (Program Solving) > BOJ (백준)' 카테고리의 다른 글
[백준 BOJ] 25893번 Majestic 10 (C++/cpp) (0) | 2025.05.10 |
---|---|
[백준 BOJ] 2232번 지뢰 (C++/cpp) (0) | 2025.05.10 |
[백준 BOJ] 5220번 Error Detection (C++/cpp) (0) | 2025.05.04 |
[백준 BOJ] 9612번 Maximum Word Frequency (C++/cpp) (0) | 2025.04.27 |
[백준 BOJ] 10757번 큰 수 A+B (Python) (0) | 2025.04.20 |