[백준 BOJ] 14652번 나는 행복합니다~ (C++/cpp)

2023. 1. 12. 11:49PS (Program Solving)/BOJ (백준)

문제 설명

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

 

14652번: 나는 행복합니다~

첫째 줄에 관중석의 크기를 나타내는 N, M과 잃어버린 관중석 번호를 나타내는 K가 주어진다. (1 ≤ N, M ≤ 30,000, 0 ≤ K ≤ N×M-1)

www.acmicpc.net

백준 BOJ 14652번 나는 행복합니다~ 문제 사진 1
백준 BOJ 14652번 나는 행복합니다~ 문제 사진 2

 

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

백준의 14652번 문제는 기초적인 사칙연산을 이용하여 해결해야 하는 문제이다.

해당 문제는, 주어진 관중석의 크기와 욱제의 자리 번호를 통해 욱제의 자리 좌표를 구하여 출력해야 하는 문제이다.

문제를 보면, 관중석 번호가 0번부터 시작하여 "가로 순으로" 나열되어 있는 모습을 볼 수 있을 것이다.

필자는 여기서, 욱제의 번호에 대해 나눗셈 몫과 나머지 연산을 수행하면 자리의 좌표를 구할 수 있을 것이라 생각하였다.

그렇게, 이 사고를 기반으로 코드를 작성하여 해당 문제를 해결할 수 있었다.

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

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

 

코드의 실행 순서

1) 관중석의 행 크기 및 열 크기, 욱제의 번호(n, m, num)를 순서대로 입력받는다.

 

2) 나누기 몫/나머지 연산자를 통하여 정답을 순차적으로 출력한다.

(문제의 관중석 표를 보면서 읽으면 이해가 더 빠를 것이다.)
- num에 대하여, m(열 번호)을 나눈 몫은 욱제 자리의 행 번호를 나타낸다.
- num에 대하여, m(열 번호)을 나눈 나머지는 욱제 자리의 열 번호를 나타낸다.

(사실상 열 번호만 연산에 쓰이기 때문에, 행 번호는 크게 신경 안 써도 된다.)

 

3) 정답을 출력하였다면, 실행 종료한다.

반응형

 

성공한 코드

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

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

	int n, m, num;
	cin >> n >> m >> num;

	cout << num / m << " " << num % m << endl;
}

 

제출 결과

백준 BOJ 14652번 나는 행복합니다~ 문제 C++ 제출 결과

(2022.11.13 백준 14652번 문제 제출 결과)

반응형