[ 백준 2908번 ] 상수

2022. 1. 3. 14:45백준/단계별 문제

백준 2908번 / 7단계 / 상수

 

백준 2908번 - 상수

 

채점결과는 다음과 같다

  메모리 시간
1번째 방법 2024 KB 0 ms

 

문제 풀이
c++에 있는 라이브러리 이용하면 쉽게 풀 수 있고 문제풀이 원리는 라이브러리 동작원리 그대로입니다

1. 문자열 s1, s2 를 입력받고 reverse 함수를 이용해서 문자열을 반전 시켜줍니다
reverse 함수는 algorithm 헤더파일에 내장 되어 있습니다

INPUT = 734 893
s1 = 734
s2 = 893

reverse

s1 = 437
s2 = 398

2. 문자열끼리는 서로 누가큰지 수 계산을 못하기 때문에 문자열을 각 인덱스마다 정수형으로 변환해줘야 합니다
저는 c++ string 헤더파일의 stoi 함수를 이용해서 풀었습니다
반전된 문자열을 stoi 함수를 이용해서 아스키코드값을 계산해 자동으로 문자열 정수를 정수형 정수로 바꿔줍니다 같은 함수로 atoi 함수가 있지만 c++ string에서는 stoi 로 사용해줍니다 string 타입에서 atoi 를 사용해줄려면 c_str() 함수를 이용해서 string 타입을 char* 타입으로 변경해서 사용가능합니다

s1 = (string)437
s2 = (string)398

stoi

num1 = (int)437
num2 = (int)398

max = 437 > 398
max = 437
코드
#include <iostream>
#include <algorithm>
#include <string>
#include <math.h>

using namespace std;

int main() {
	int num1, num2, result;
	string s1;
	string s2;

	cin >> s1 >> s2;

	reverse(s1.begin(), s1.end());
	reverse(s2.begin(), s2.end());
	// reverse: 문자열을 뒤집어주는 함수

	num1 = stoi(s1);
	num2 = stoi(s2); 
	// stoi: 아스키코드값을 계산해서 문자열을 정수형태로 변환해주는 함수

	result = max(num1, num2);

	cout << result;

}