백준풀기

[c++] 백준 1075번 나누기

해언뵤 2024. 1. 31. 02:02

문제

두 정수 N과 F가 주어진다. 지민이는 정수 N의 가장 뒤 두 자리를 적절히 바꿔서 N을 F로 나누어 떨어지게 만들려고 한다. 만약 가능한 것이 여러 가지이면, 뒤 두 자리를 가능하면 작게 만들려고 한다.
예를 들어, N=275이고, F=5이면, 답은 00이다. 200이 5로 나누어 떨어지기 때문이다. N=1021이고, F=11이면, 정답은 01인데, 1001이 11로 나누어 떨어지기 때문이다.

 

입력

첫째 줄에 N, 둘째 줄에 F가 주어진다. N은 100보다 크거나 같고, 2,000,000,000보다 작거나 같은 자연수이다. F는 100보다 작거나 같은 자연수이다.

 

출력

첫째 줄에 마지막 두 자리를 모두 출력한다. 한자리이면 앞에 0을 추가해서 두 자리로 만들어야 한다.

 

 

문제풀이

n을 입력받고 n을 100으로 나눈 몫에 100을 곱해서 n의 뒷 두자리를 00으로 초기화 시킨다. 그리고 while문을 n%f의 값이 0이 될 때까지 실행시킨다. 0이 아니라면 n을 1씩 더해가며 f로 나누어떨어지는 값을 찾는다.  찾으면 뒷두자리수만 출력하면 되기 때문에 n을 100으로 나눈 나머지 값을 n에 저장한다. 
한자리면 앞에 0을 추가해주고 아니면 n 그대로 출력해준다.
#include <iostream>
using namespace std;

int main(){
    int N, F, temp;
    cin >> N >> F;

    N /= 100; //뒷 두자리빼고 나머지 앞자리들 남기는 작업
    N *= 100; // 뒷 두자리 00으로 초기화

    while (N%F != 0) N++;
    N %= 100; // while문에서 조건을 불충족시켜 나온 N의 값에서 뒷 두자리 추출
    if (N<10) cout << "0" << N <<endl;
    else cout << N <<endl;
    return 0;
}