알고리즘/백준

[C++] 백준 2908번 - 상수 & Class1 후기

Esunn 2022. 7. 27. 02:17

 

 

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

 

2908번: 상수

상근이의 동생 상수는 수학을 정말 못한다. 상수는 숫자를 읽는데 문제가 있다. 이렇게 수학을 못하는 상수를 위해서 상근이는 수의 크기를 비교하는 문제를 내주었다. 상근이는 세 자리 수 두

www.acmicpc.net

 

두세 자리 수가 주어지고 이 수를 뒤집어서 읽은 후 큰 쪽을 출력하는 문제이다.

예를 들어 461 342 가 주어지면 164와 243을 비교하는 식의 문제이다.

 

 

#include <iostream>
using namespace std;
int k;


int change(int x, int y) {
	k = y;
	if (y == 0) return 0;
	return (x % 10 * k) + change( x /10, k / 10);
}

int main() {
	int a, b;
	
	cin >> a >> b;
	int a2 = change(a, 100);
	int b2 = change(b, 100);

	if (a2 > b2) cout << a2;
	else cout << b2;
}

 

사실문제가 세 자리 수만 주기 때문에 뒤집는 부분을 전부 직접 해도 되지만

재귀를 토해 구현을 하고 싶어서 재귀 함수를 만들어서 써봤다.

 

수를 뒤집기만 한다면 다른 건 딱히 없다.

두 수를 비교해서 큰 수를 출력해준다.

 


Class 1 문제 후기

이 글을 끝으로 Class 1문제는 전부 다 풀었다.

Class 1은 알고리즘 개념보다 기본적인 프로그래밍의 기초들이 많았던 것 같다.

함수, 배열, 문자열, 연산 등등 프로그래밍의 기본을 다질 수 있었다.

 

Class 2 문제부터는 다른 알고리즘 개념들을 알아야 하는 문제인 것 같다.

공부할게 많아지는 소리가 여기까지 들린다.

이제 어려운 문제들의 연속일 것 같다.

 

Class 1에서는 문자열을 많이 다뤄봐서 좋았다.

c와 c++을 배우면서 string 자료형을 별로 안 써봤는데

문제를 풀면서 많이 접했던 것 같다.

 

백준으로 PS 문제를 처음 접해본 나에게는 조금 어렵기도 했지만

푸는 과정과 맞췄을 때의 성취감이 좋았다.

더 어려운 문제들도 풀어보러 가야겠다.