[백준/BOJ] 백준 1065번 : 한수
2020. 6. 1. 20:25ㆍ알고리즘 문제풀이
https://www.acmicpc.net/problem/1065
1부터 N까지 한수의 개수를 찾아내는 완전 탐색(브루트 포스) 문제이다.
1부터 N까지 한수인지 아닌지를 파악해 개수를 센다.
코드
#include <iostream>
#include <string>
using namespace std;
bool check(string num) //한수인지를 체크한다.
{
bool ret = true;
int num1;
int num2;
int num3;
if (num.size() < 3)//두자릿수 이하라면 모두 한수이다.
return ret;
for (int i = 0; i < num.size() - 2; i++)
{
//substr로 한 부분을 나타내고, stoi로 문자열을 숫자로 만든다.
num1 = stoi(num.substr(i, 1));
num2 = stoi(num.substr(i + 1, 1));
num3 = stoi(num.substr(i + 2, 1));
//한수가 아닐때
if (num1 - num2 != num2 - num3)
{
ret = false;
break;
}
}
return ret;
}
int main()
{
cin.tie(NULL);
ios_base::sync_with_stdio(false);
int n;
int cnt = 0; //개수
cin >> n; // 자연수 n을 입력받는다.
for (int i = 1; i <= n; i++) //1이상, n이하 수를 체크한다.
{
if (check(to_string(i)))
cnt++;//만약 i가 한수라면 개수를 추가한다.
}
cout << cnt;
return 0;
}
문자열을 사용함으로써, 각 자리의 숫자를 파악해 한수인지를 파악하였다.
'알고리즘 문제풀이' 카테고리의 다른 글
[백준/BOJ] 백준 14502번 : 연구소 (0) | 2020.06.04 |
---|---|
[백준/BOJ] 백준 7568번 : 덩치 (0) | 2020.06.03 |
[백준/BOJ] 백준 2231번 : 분해합 (0) | 2020.06.03 |
[백준/BOJ] 백준 14501번 : 퇴사 (0) | 2020.06.03 |
[백준/BOJ] 백준 2309번 : 일곱 난쟁이 (0) | 2020.06.02 |