Baekjoon

[백준 C++] 1065번 - 한수

yujin0517 2022. 2. 19. 00:37

1065번 - 한수

1065번 문제

 

<코드 작성>

  1. 입력받은 N이 100보다 작을 경우(한 자릿수, 두 자릿수) 모두 등차수열을 만족하기 때문에 N을 출력
  2. N이 100보다 크거나 같을 경우 한수의 개수를 99부터 시작하고 등차수열을 만족하는 경우 한수의 개수를 하나씩 증가시킴
  3. 등차수열인지 구분하는 과정에서 N을 string 타입으로 변환하여 십의 자릿수에서 일의 자릿수를 뺀 값과 백의 자릿수에서 십의 자릿수를 뺀 값이 일치할 경우 한수의 개수를 1씩 증가시킴
  4. N이 1000일 경우 일의 자릿수, 십의 자릿수, 백의 자릿수만 비교해도 등차수열을 만족하지 않기에 고려하지 않아도 됨

 

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

int main() {
	int N, cnt = 0;
	cin >> N;

	string str;
	if (N < 100) cout << N;
	else {
		cnt = 99;
		for (int i = 100; i <= N; i++) {
			str = to_string(i);
			if (str[1] - str[0] == str[2] - str[1]) cnt++;
		}
		cout << cnt;
	}
	return 0;
}

 

처음 코드를 작성할 때, N이 100보다 크거나 같을 경우 cnt를 99로 초기화시키는 코드를 for문 안으로 넣어 N에 어떤 수를 입력해도 출력 값은 100이 나왔습니다. 

바보 같은 실수를 발견하고 코드를 수정해서 제출하니 정답이었습니다!

 

감사합니다!

2022.02.18