본문 바로가기

코딩 이야기/백준 풀이

백준 1065번: 한수 C언어 코드(완전탐색, 브루트포스)

반응형

#include<stdio.h>

int main(){
   int n;
   scanf("%d", &n);
   if(n<100){
       printf("%d", n);
   }else if(n == 1000){
       printf("144");
   }else{
       int count = 0;
       for(int i=100; i<n+1; i++){
           int temp = i/100; //백의 자리수
           int temp1 = (i/10)%10; //십의 자리수
           int temp2 = i%10; //일의 자리수
           if(temp1-temp == temp2-temp1){
               count += 1;
           }

       }
       printf("%d", 99+count); //100미만의 수들때문에 99를 더함
   } 

   
}
설명

n이 1000이하 이기 때문에, 1,2자리수와 3자리수와 유일한 4자리인 1000을 구분을 해주었다. 1,2자리일때는 무슨 수가 오던지 등차수열을 이루기 때문에 n이 100미만이면 그냥 넣은 값 그대로 출력하면 된다. 1000일때는 그냥 유일한 4자리이기도 하고 예제 입력에 1000이 144라는 것을 알려주어 1000이면 144 출력하도록 하였다. 3자리가 그나마 브루트포스를 사용하는데, for문으로 100부터 n까지 돌리면서, 각 자리의 숫자를 분리해서 백의 자리수와 십의 자리수를 뺀 값과 십의 자리수와 일의 자리수를 뺀 값이 같을 때 카운트를 +1 해준 후에 출력할때 99를 더해주는 식으로 풀었다.

 

문제점

없다.

반응형