[C++] 백준 1075. 나누기

멋진감자·4일 전
0

알고리즘

목록 보기
104/105
post-thumbnail

🌽 문제

🥕 입출력

🥔 풀이

코드상으로 a는 N의 마지막 두 자리이고, b는 N을 F로 나눴을 때 나머지이다.
N이 F로 나누어떨어지려면 N에서 b만큼이 필요없다는 의미라고 생각했다.

이 때 마지막 두 자리(a)가 b보다 작으면 a에서 b를 뺄 수 없다.
a가 b보다 작다는 것은 a에서 b를 빼고 다시 F를 더해준 값이 N의 마지막 뒤 두 자리를 최소로 만드는 방법이라는 말과 같다.

a가 b보다 작지 않다면 나머지값을 한 번 빼주고,
a가 음수가 되기 전까지 F를 최대한으로 빼주면 된다.

🥬 코드

#include <iostream>
using namespace std;

int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);
	
	int N, F;
	cin >> N >> F;

	int a = N % 100;
	int b = N % F;

	if (a < b) {
		a = (N - b + F) % 100;
	}
	else {
		a -= b;
		while (a - F >= 0) a -= F;
	}

	if (a / 10 < 1) cout << "0";
	cout << a;
	
	return 0;
}

🥜 채점

호로록 풀릴 줄 알고 골랐는데 그렇진 않았다.
더 간단한 방법이 있을 것 같긴 한데 더파고싶진않은

profile
난멋져

0개의 댓글

관련 채용 정보