문제
N의 1단부터 K단까지 각 결과를 뒤집었을 때 가장 큰 값을 출력하라.
입력
정수 N과 K가 주어진다.
출력
뒤집은 값 중 최댓값을 출력한다.
예제
| 입력 | 출력 |
|---|---|
2 9 | 81 |
풀이
모든 곱셈 결과를 뒤집어 최댓값을 구한다.
- 1부터 K까지 반복하며
N * i를 계산한다 - 결과를 문자열로 변환 후
reverse로 뒤집는다 stoi로 정수 변환 후 최댓값을 갱신한다
핵심 아이디어: 문자열 변환과 역순 처리로 숫자를 뒤집고, K개 중 최댓값을 선택한다.
코드
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
int n, k;
int ans = 0;
int main()
{
cin >> n >> k;
for (int i = 1; i <= k; i++)
{
int res = n * i;
string str = to_string(res);
reverse(str.begin(), str.end());
ans = max(ans, stoi(str));
}
cout << ans;
}복잡도
- 시간: O(K × D) (D: 자릿수)
- 공간: O(D)