본문 바로가기
🧑‍💻코딩 테스트/백준 (BOJ)

[코딩테스트/백준 알고리즘] 1065번 : 한수 (C++ 풀이)

by 코코의 주인 2022. 1. 12.

풀이

자료구조

- int input : 입력받은 수

- int count : 개수 카운트

- int hunds : 백의 자리

- int tens : 십의 자리

- int units : 일의 자리

 

알고리즘

- 브루트 포스 방식으로 1부터 N까지 모든 수를 검사

 

코드

- 입력이 한자리, 두 자리, 세 자릿수 일 경우를 나눠서 처리했음

- 100미만인 수는 모두 한수이기 때문에 입력이 한자리 수, 두 자릿수 일 때를 한 번에 묶어서 처리해도 됨


코드 

#include <iostream>
#include <cstdio>
using namespace std;
int main() {
    int input = 0;
    int count = 0;
    int hunds = 0;
    int tens = 0;
    int units = 0;

    scanf("%d", &input);

    //
    for (int i = 1; i <= input; i++) {
        hunds = i / 100;
        tens = (i - hunds * 100) / 10;
        units = i % 10;

        if(hunds == 0 && tens == 0) {  //입력이 한자리 수
            count++;
        }

        else if (hunds == 0) {  //입력이 두자리 수
            count++;
        }

        else {  //입력이 세자리 수
            if (!((hunds - tens) - (tens - units))) {
                count++;
            }
        }
    }

    printf("%d", count);  //출력
    
    return 0;
}

 


총평

입력을 백의 자리, 십의 자리, 일의 자리로 나누는 거에서 좀 헤맸다... 왜 그랬을까...

문제 풀이 보다는 문제가 무슨 소린지 이해하는 데에 더 어려움을 겪었던 문제다.

혹시 같은 어려움을 겪고 있다면 참고하면 좋을 링크를 하나 남긴다.

https://www.acmicpc.net/board/view/25689

 

글 읽기 - 문제 이해가 안됩니다

댓글을 작성하려면 로그인해야 합니다.

www.acmicpc.net

 

댓글