티스토리 뷰
https://www.acmicpc.net/problem/2908
문제
상근이의 동생 상수는 수학을 정말 못한다. 상수는 숫자를 읽는데 문제가 있다. 이렇게 수학을 못하는 상수를 위해서 상근이는 수의 크기를 비교하는 문제를 내주었다. 상근이는 세 자리 수 두 개를 칠판에 써주었다. 그 다음에 크기가 큰 수를 말해보라고 했다.
상수는 수를 다른 사람과 다르게 거꾸로 읽는다. 예를 들어, 734와 893을 칠판에 적었다면, 상수는 이 수를 437과 398로 읽는다. 따라서, 상수는 두 수중 큰 수인 437을 큰 수라고 말할 것이다.
두 수가 주어졌을 때, 상수의 대답을 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 상근이가 칠판에 적은 두 수 A와 B가 주어진다. 두 수는 같지 않은 세 자리 수이며, 0이 포함되어 있지 않다.
출력
첫째 줄에 상수의 대답을 출력한다.
제한
시간 제한 : 1초 / 메모리 제한 : 128MB
1. 어떻게 풀까?
1-1) 숫자를 뒤집는 두 가지 방법
입력으로 A와 B를 받은 다음, 두 숫자를 각각 뒤집어야 한다.
두 가지 방법이 있는데 첫 번째 방법은 int형으로 처리하는 방법, 두 번째 방법은 string으로 뒤집는 방법이 있다.
1.
첫 번째 방법으로 먼저 풀어보자.
뒤집고 싶은 수가 num이라고 하자. 숫자를 뒤집는 다는 것은 낮은 자리수부터 차례로 맨 앞으로 보낸다는 의미이므로, 일의 자리부터 처리해주고, 하나씩 붙여주면 된다.
숫자를 하나씩 붙여주기 위해선 기존의 숫자에 10을 곱한 다음, 새로운 일의 자리를 더해주면 된다. 이를 함수로 나타내면 다음과 같다.
1 2 3 4 5 6 7 8 | int reversed(int& num){ int result = 0; while (num > 0) { result = result * 10 + num % 10; num /= 10; } return result; } | cs |
2.
두 번째 방법으로 풀어보자.
C++의 STL의 헤더 <algorithm.h>에는 배열을 뒤집을 수 있는 reverse라는 함수가 존재한다.
C언어를 다루어본 경험이 있는 코더들은 string 형태는 char형의 배열로 다루었던 경험을 토대로 string도 뒤집을 수 있다고 생각할 수 있고, 실제로 C++에서 string형태의 변수에는 배열에 사용되는 함수 대부분을 적용할 수 있다.
reverse의 첫 인자로 배열의 첫 포인터, 두 번째 인자로 배열의 마지막 포인터를 넣어주면 배열 전체를 뒤집을 수 있다.
string을 뒤집은 다음, 이를 다시 정수형으로 변환하여주면 원하는 함수를 만들 수 있다. 이를 나타내면 다음과 같다.
1 2 3 4 5 | int reversed(int& num){ string num_str = to_string(num); reverse(num_str.begin(), num_str.end()); return stoi(num_str); } | cs |
A, B를 각각 뒤집은 다음, 무엇이 더 큰지 max 함수를 이용하여 출력하면 맞았습니다! 를 받을 수 있다.
2) 최종 코드
첫 번째 방법을 기준으로 작성하였다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | #include <bits/stdc++.h> using namespace std; int reversed(int& num){ int result = 0; while (num > 0) { result = result * 10 + num % 10; num /= 10; } return result; } int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int A, B; cin >> A >> B; cout << max(reversed(A), reversed(B)); return 0; } | cs |
'PS 이야기 > PS - BOJ' 카테고리의 다른 글
[BOJ] 3052번 - 나머지 (0) | 2022.04.04 |
---|---|
[BOJ] 2920번 - 음계 (0) | 2022.04.04 |
[BOJ] 2884번 - 알람 시계 (0) | 2022.04.04 |
[BOJ] 2753번 - 윤년 (0) | 2022.04.04 |
[BOJ] 2742번 - 기찍 N (0) | 2022.04.04 |
- Total
- Today
- Yesterday
- 제어문
- bomblab
- 헤더
- effective async
- 함수
- 사칙연산
- MIN
- BRONZE
- 문자열
- 백준
- Network
- JS
- 수학
- GDSC
- docker
- C
- Python
- 프로그래밍
- Proactor
- C++
- react
- equal
- 알고리즘
- BOJ
- 구현
- 시간복잡도
- CSAPP
- Max
- for
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |