μ½”λ”©ν…ŒμŠ€νŠΈ/BOJ

[λ°±μ€€ 1065] ν•œμˆ˜ (C++)

kite707 2021. 12. 1.

https://www.acmicpc.net/problem/1065

 

1065번: ν•œμˆ˜

μ–΄λ–€ μ–‘μ˜ μ •μˆ˜ X의 각 μžλ¦¬κ°€ λ“±μ°¨μˆ˜μ—΄μ„ 이룬닀면, κ·Έ 수λ₯Ό ν•œμˆ˜λΌκ³  ν•œλ‹€. λ“±μ°¨μˆ˜μ—΄μ€ μ—°μ†λœ 두 개의 수의 차이가 μΌμ •ν•œ μˆ˜μ—΄μ„ λ§ν•œλ‹€. N이 μ£Όμ–΄μ‘Œμ„ λ•Œ, 1보닀 ν¬κ±°λ‚˜ κ°™κ³ , N보닀 μž‘κ±°λ‚˜

www.acmicpc.net

아이디어

1~99λŠ” ν•œμˆ˜κ°€ 1,2,3,4 .... 99κ°œμ΄λ‹ˆ (ν•œ 자리, 두 자리 μˆ˜λŠ” λͺ¨λ‘ ν•œμˆ˜μ΄λ‹ˆκΉŒ) μž…λ ₯받은 μˆ˜κ°€ 100이상일 경우 100λΆ€ν„° ν•΄λ‹Ή 수 κΉŒμ§€ ν•œμˆ˜μΈμ§€ μ²΄ν¬ν•˜λ©΄ λœλ‹€. ν•œ μžλ¦¬μ”© 잘라 배열에 λ„£κ³  λ’·μžλ¦¬ μˆ˜μ—μ„œ μ•žμžλ¦¬ 수λ₯Ό λΉΌλ©° ν•œμˆ˜μΈμ§€ μ²΄ν¬ν–ˆλ‹€.

 

μ½”λ“œ

#include <iostream>
#include <string>
#include <vector>
using namespace std;

int main() {
	ios::sync_with_stdio(false);
	cin.tie(0);

	int cnum = 0;
	cin >> cnum;

	if (cnum < 100) {
		cout << cnum;
	}
	else {
		int ans = 99;
		
		bool flag = true;
		for (int i = 100; i <= cnum; i++) {
			vector<int> tmp;
			int number = i;
			string strnum = to_string(number);

			for (int kk = 0; kk < strnum.size(); kk++) {
				tmp.push_back(number % 10);
				number /= 10;
			}


			

			for (int j = 0; j < tmp.size() - 2; j++) {
				if (tmp[j] - tmp[j + 1] != tmp[j+1] - tmp[j + 2]) {
					flag = false;
					break;
				}
			}
			if (flag) {
				ans++;
			}
			flag = true;
		}
		cout << ans;
	}
	
}

 

 

λŒ“κΈ€