문제출처: https://www.acmicpc.net/problem/1075


제목에도 나와있듯이  c++ string기능들을 익히기위해 string 으로 풀어봤습니다.

물론, 문제의 조건을 이용해서 숫자로 푸는게 제일 깔끔하고 코드가 짧습니다. (충분히 푸실 수 있으니 풀이는 생략)

저는 stirng 사용법을 익히고자 아래와 같은 방법으로 풀어보았습니다.


string 사용이 아직 미숙하시면 아래의 링크를 참고해주세요!!

stirng사용법 부수기 : https://jow1025.tistory.com/51


문제

두 정수 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을 추가해서 두 자리로 만들어야 한다.


풀이

코드로 확인하는게 이해가 더 편할 것 같습니다.

말그대로 string사용법을 익히기위한 풀이방식입니다. (이렇게 풀지마세요..굳이...)


코드

#include<iostream>
#include<string>
using namespace std;
int main()
{
	int n, f;
	cin >> n >> f;
	string s = to_string(n);
	//맨 뒤, 맨 뒤-1자릿값 x,y에 저장
	int x = s[s.size() - 1]-'0';
	int y = s[s.size() - 2]-'0';
	//뒤 두자리 뺀 값을 저장
	string temp1 = s.substr(0, s.size() - 2);
	//0부터 하나씩 다 찾아보다가 찾으면 출력
	for (int i = 0; i <= 9; i++)
	{
		for (int j = 0; j <= 9; j++)
		{
			//temp1에 0~9값을 추가해가며 f로나눠지는지확인
			int temp2=stoi(temp1 + to_string(i)+to_string(j));
			if (temp2 % f == 0)
			{
				cout << i << j;
				return 0;
			}
		}
	}
}


결과

+ Recent posts