반응형
문제`
풀이
#include <iostream>
using namespace std;
int main()
{
int N, F;
cin >> N >> F;
N = (N / 100) * 100;
for (int i = 0; i < 100; i++)
{
int temp = N + i;
if (temp % F == 0)
{
if (i < 10)
{
cout << "0" << i << endl;
return 0;
}
else
{
cout << i << endl;
return 0;
}
}
}
}
먼저 풀이가 선뜻 떠오르진 않을 것입니다. 생각하는 과정이 조금 필요했던 문제라는 생각이 들어요. 브론즈 문제지만 조금은 시간이 필요했습니다.
해당 문제는 N의 마지막 두 자리 수를 더했을 때 F로 나누어 떨어지는 수를 찾는 문제인데요. 이것을 해결하기 위해선 N을 변형해주는 과정이 필요합니다. 마지막 두 자리 수를 00으로 만들어준 다음에 0부터 99까지 차례로 올라가면서 F로 나누어 떨어지는 값을 출력해주는 것을 목표로 합니다.
왜냐하면 최소값을 구해야 하기 때문에 for문을 통해 위쪽으로 올라가면서 처음 나오는 값을 출력하면 간단하게 구할 수 있기 때문입니다.
따라서 N에 마지막 두 자리 수를 0으로 바꿔주기 위해선 100으로 나눈 다음 또 다시 100을 곱하면 자연스럽게 마지막 두 자리는 00으로 설정됩니다.
이후 0부터 99까지 반복하면서 각 숫자에 수정된 N을 더해보고 그 결과가 F로 나누어 떨어지는지 확인한 후 그 숫자를 찾으면
1. 10보다 작은 경우 앞에 0을 붙여서 출력
2. 10보다 클 경우 해당 숫자 그대로 출력
그리고 각 부분이 나온다면 바로 return 0을 통해 종료되게 코드를 구성했습니다.
반응형
'IT 프로그래밍 > 백준' 카테고리의 다른 글
[c++]백준 1076번 저항 (0) | 2024.05.19 |
---|---|
[C++] 백준 1094번 : 막대기 (0) | 2024.05.19 |
[C++] 백준 1316번 그룹 단어 체커 (0) | 2024.04.07 |
[C++] 백준 2941번 크로아티아 알파벳 (0) | 2024.03.31 |
[C++] 백준 1009번 분산처리 (0) | 2024.03.31 |