나 개발자 진짜 되냐?

백준 C++ 2908번 상수 ( reverse, stoi ) 본문

C++을 시작해봐요!/구현문제를 풀어봤어요!

백준 C++ 2908번 상수 ( reverse, stoi )

Snow Rabbit 2025. 12. 13. 17:44

 

주말엔 알바를 나가는데..

오늘은 비가 너무 많이 와서 집에 있었다.

모처럼 휴가다.

즐겁다.

 

원래는 평일에만 문제를 풀고 주말에는 일 때문에 공부를 많이 못하다 보니

책을 보거나, 문제를 보면서 이렇게 풀면 되려나? 하며 손코딩하는 시간이 종종 있었는데

뭔가 이번 주에 구현문제를 풀자고 나 자신과 약속했던 거 때문에

7일 내내 풀어보기로 마음먹었다.

 

오늘은 그중에서 상수라는 문제를 풀어보려는데

결국 문법? 을 몰라서 ㅋㅋㅋㅋㅋ

지피티를 찾아봤습니다.

 

그 과정을 담기 위해 글을 씁니다.

 


 

문제부터 볼까요?!

 

상수는 청개구리구나!

그니까 입력값을 뒤집어서

더 큰 값을 내면 되는 거잖아?!

 

이론상 이렇게 쉬울 수가 없다

그냥 글자를 뒤집어서.. 비교해서 작은 걸 출력하면 되잖아?!

근데.... 어....

아....ㅇ.. 어떻... 게 뒤집더라...?!

ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ

reverse? 쓰면 되는데.. 어떻...ㄱ... 쓰.... 더라..?

..

 

reverse

문자열이나 배열의 순서를 통째로 거꾸로 뒤집어주는 친구

 

reverse(a.begin(), a.end())

괄호 안에는 시작을 쓰면 된다.

 

321 > 123

abc > cba
hello > olleh

 

근데 이 reverse에서는 숫자는 안된다.

문자열이나 배열이다.

그래서 a.begin을 써줘야 한다.

 

이번에 안 사실이었다.

string은 배열처럼

 

1. 인덱스 접근 가능

s [i]

 

2. for문으로 순회 가능

for ( int i =0; i <s.size() ;i++)

 

3. range - for문 가능

foir ( char c : s )

 

4. STL 알고리즘 가능

reverse( s.begin(), s.end())

sort(s.begin(), s.end())

등... 

 

그렇다면.. reverse를 사용해야 하니까...

처음부터 숫자가 아닌 문자열로 받아야 한다는 사실!

 

근데 문제는 두 숫자 중에 큰 수를 출력하라는데

그럼 max를 써야 하고.. 근데 문자열이면 비교가 안되고.. 흠흠흠흠

 

stoi

문자열을 숫자로 바꿔주는 친구

 

int x = stoi(문자열);

string을 overturn 한다 int로

 

그래서!

string s = "321";

int x  = stio(s);

cout << x;

 

이렇게 해주면 된다.

 

 

완성!

청개구리!!!!! 풀었다!

 

배운 것

reverse( a.begin(), a.end())

stoi(a)