이번 포스팅에서는 백준 온라인 저지의 28444번 문제인 “HI-ARC=?“를 다루어 보겠습니다. 이 문제는 간단한 수식을 구현하는 문제로, 기본적인 산술 연산과 입력 처리 능력을 확인할 수 있습니다.
문제 : https://www.acmicpc.net/problem/28444
문제 설명
HI-ARC 학회는 일상 속의 문장들을 수식으로 표현하는 것을 즐기는 특이한 문화를 가지고 있습니다. 그중에서도 최근에 개발한 HI-ARC 수식은 아래와 같은 규칙을 따릅니다:
- 첫 번째 항은 H와 I의 곱입니다.
- 두 번째 항은 A, R, C의 곱입니다.
- 결과값은 첫 번째 항에서 두 번째 항을 뺀 값입니다.
이를 수식으로 표현하면 다음과 같습니다:
\[ \text{결과값} = (H \times I) - (A \times R \times C) \]각각의 문자에 해당하는 숫자들이 입력으로 주어졌을 때, 이 수식을 계산하여 결과값을 출력하는 것이 문제의 목표입니다.
입력
- 첫째 줄에 H, I, A, R, C가 공백으로 구분되어 순서대로 주어집니다.
- 각 값은 다음 범위를 만족합니다:- \(0 \leq H, I, A, R, C \leq 100\)
- 모든 값은 정수입니다.
 
출력
- 계산된 결과값을 출력합니다.
예제 입력 1
|  |  | 
예제 출력 1
|  |  | 
예제 설명
- 첫 번째 항: \(4 \times 6 = 24\)
- 두 번째 항: \(1 \times 2 \times 3 = 6\)
- 결과값: \(24 - 6 = 18\)
접근 방식
이 문제는 기본적인 산술 연산과 입력 처리를 요구하는 간단한 구현 문제입니다. 따라서 다음과 같은 단계로 접근할 수 있습니다:
- 입력 처리: 공백으로 구분된 다섯 개의 정수를 입력받습니다.
- 첫 번째 항 계산: H와 I를 곱하여 첫 번째 항을 계산합니다.
- 두 번째 항 계산: A, R, C를 곱하여 두 번째 항을 계산합니다.
- 결과값 계산: 첫 번째 항에서 두 번째 항을 빼서 결과값을 구합니다.
- 출력: 계산된 결과값을 출력합니다.
특별한 알고리즘이나 자료 구조가 필요하지 않으며, 자료형의 범위도 정수(int)로 충분합니다.
C++ 코드와 설명
|  |  | 
코드의 동작 단계별 설명
- 입력 처리 - 1- std::cin >> H >> I >> A >> R >> C;- 사용자로부터 다섯 개의 정수 H, I, A, R, C를 입력받습니다.
 
- 첫 번째 항 계산 - 1- int first_term = H * I;- H와 I를 곱하여 첫 번째 항을 계산합니다.
 
- 두 번째 항 계산 - 1- int second_term = A * R * C;- A, R, C를 곱하여 두 번째 항을 계산합니다.
 
- 결과값 계산 - 1- int result = first_term - second_term;- 첫 번째 항에서 두 번째 항을 빼서 결과값을 구합니다.
 
- 결과 출력 - 1- std::cout << result << std::endl;- 계산된 결과값을 출력합니다.
 
C++ without library 코드와 설명
|  |  | 
코드의 동작 단계별 설명
- 입력 처리 - 1- scanf("%d %d %d %d %d", &H, &I, &A, &R, &C);- scanf함수를 사용하여 사용자로부터 다섯 개의 정수를 입력받습니다.
 
- 첫 번째 항 계산 - 1- int first_term = H * I;- H와 I를 곱하여 첫 번째 항을 계산합니다.
 
- 두 번째 항 계산 - 1- int second_term = A * R * C;- A, R, C를 곱하여 두 번째 항을 계산합니다.
 
- 결과값 계산 - 1- int result = first_term - second_term;- 첫 번째 항에서 두 번째 항을 빼서 결과값을 구합니다.
 
- 결과 출력 - 1- printf("%d\n", result);- 계산된 결과값을 출력합니다.
 
Python 코드와 설명
|  |  | 
코드의 동작 단계별 설명
- 입력 처리 - 1- H, I, A, R, C = map(int, input().split())- input()함수로 한 줄의 문자열을 입력받고,- split()메서드로 공백 기준으로 분리합니다.
- map(int, ...)를 사용하여 분리된 문자열을 정수로 변환하고 각각의 변수에 할당합니다.
 
- 첫 번째 항 계산 - 1- first_term = H * I- H와 I를 곱하여 첫 번째 항을 계산합니다.
 
- 두 번째 항 계산 - 1- second_term = A * R * C- A, R, C를 곱하여 두 번째 항을 계산합니다.
 
- 결과값 계산 - 1- result = first_term - second_term- 첫 번째 항에서 두 번째 항을 빼서 결과값을 구합니다.
 
- 결과 출력 - 1- print(result)- 계산된 결과값을 출력합니다.
 
결론
이번 문제는 기본적인 산술 연산과 입력 처리를 요구하는 단순한 구현 문제였습니다. 이러한 문제는 프로그래밍 언어의 기초 문법과 입출력 방법을 숙달하는 데 도움이 됩니다. 앞으로 더 복잡한 문제를 풀기 위해서는 이러한 기초를 탄탄히 다져 놓는 것이 중요하다고 생각합니다. 또한, 코드 작성 시 가독성을 높이기 위해 변수명을 의미 있게 정하고 주석을 적절히 사용하는 습관을 들이는 것도 좋습니다.
![Featured image of post [Algorithm] C++/Python 백준 28444번 : HI-ARC=?](/post/algorithm/2024-10-16-boj-28444/tmp_wordcloud_hu_5412d6981179f2b.png)
![[Algorithm] C++/Python 백준 23808번 : 골뱅이 찍기 - ㅂ](/post/algorithm/2024-10-16-boj-23808/tmp_wordcloud_hu_4505524f68b30244.png)
![[Algorithm] C++/Python 백준 24736번 : Football Scoring](/post/algorithm/2024-10-16-boj-24736/tmp_wordcloud_hu_f0858d7de95fd087.png)
![[Algorithm] C++/Python 백준 28444번 : HI-ARC=?](/post/algorithm/2024-10-16-boj-28444/tmp_wordcloud_hu_ce43b63471280039.png)
![[Algorithm] C++/Python 백준 28702번 : FizzBuzz 스페셜 저지](/post/algorithm/2024-10-16-boj-28702/tmp_wordcloud_hu_21b39618dff2a5fb.png)
![[Algorithm] C++/Python 백준 11505번 : 구간 곱 구하기](/post/algorithm/2024-10-10-boj-11505/tmp_wordcloud_hu_d58423f1666db104.png)
![[Algorithm] C++/Python 백준 16394번 : 홍익대학교](/post/algorithm/2024-10-16-boj-16349/tmp_wordcloud_hu_82a1563a13c7213e.png)
![[Algorithm] C++ 백준 5051번: 피타고라스의 정리 (mod n)](/post/algorithm/2025-10-14-boj-5051-pythagorean-mod-n-cpp-solution/wordcloud_hu_7e8a5079e9226a49.png)
![[Algorithm] C++ 백준 8464번: Non-Squarefree Numbers](/post/algorithm/2025-10-14-boj-8464-non-squarefree-numbers-cpp-solution/wordcloud_hu_4f80697d0be61606.png)
![[Algorithm] cpp 백준 12728번: n제곱 계산](/post/algorithm/2025-09-16-boj-12728-n-power-calculation-last-three-digits-cpp-solution/wordcloud_hu_767610d37d930d0a.png)
![[Algorithm] cpp-python 백준 10854번: Divisions - 약수 개수](/post/algorithm/2025-09-16-boj-10854-divisions-number-of-divisors-cpp-python-solution/wordcloud_hu_f2a53254f2f126b2.png)