[백준 BOJ] 29863번 Arno's Sleep Schedule (C++/cpp)

2024. 5. 26. 16:59PS (Program Solving)/BOJ (백준)

문제 설명

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

 

백준 BOJ 29863번 Arno's Sleep Schedule 문제 사진

 

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

백준의 29863번 문제는 사칙연산을 활용하여 쉽게 해결할 수 있는 단순 연산 문제이다.

해당 문제는, 아르노가 잠드는 시간과 일어나야 할 시간이 입력으로 주어질 때 아르노의 수면시간이 얼마나 되는지를 구하여 출력해야 하는 문제이다.

(이때 24시간 이상 잠들지 않는다는 가정 하에 정답을 구해야 한다. 24시간을 연달아 잘 수는 있을까)

영어 지문으로 문제 설명이 되어있는데, 해석본은 아래 링크를 참고하면 된다.

https://www.acmicpc.net/board/view/127455

 

시간에 대한 단순 덧셈 및 뺄셈을 활용하여 정답을 구할 수 있는 아주 간단한 문제이다.

주의해야 할 점이라면, 잠드는 시간의 범위가 20시~3시 사이이며 일어나야 할 시간의 범위가 5시~10시 사이라는 점 정도가 되겠다.

정답이 음수로 나오거나 올바르지 않는 값으로 나오지 않게끔 조절만 잘해주면 푸는 데에 큰 문제는 없을 것이다.

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

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

 

코드의 실행 순서

1) 아르노가 잠드는 시간(a)과 일어나야 할 시간(b)을 순서대로 입력받는다.

 

2) 정답을 저장할 변수 sum을 미리 선언해 둔다.

 

3) a의 값에 따라서, 연산을 아래와 같이 수행한다.

- 만약 a값이 20~23 사이라면, (a~0시) 구간과 (0시~b) 구간으로 나누어서 더한 값을 sum에 저장한다.

- a값이 0~3 사이라면, (a~b) 구간으로 바로 연산하여 이를 sum에 저장한다.

 

4) 위에서 연산한 sum값을 출력한 뒤, 실행 종료한다.

반응형

 

성공한 코드

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

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

	int a, b;
	cin >> a >> b;

	int sum;
	if (a > 10) { sum = (24 - a) + b; }
	else { sum = b - a; }
	cout << sum << endl;
}

 

제출 결과

백준 BOJ 29863번 Arno's Sleep Schedule 문제 C++ 제출 결과

(2023.09.15 백준 29863번 문제 제출 결과)

반응형