프로그래밍/백준

5. 백준 11720 숫자의 합 (공백없이 숫자'들' 받기) -C언어

량아이 2022. 7. 26. 13:52

이문제를 처음 봤을때 다른 문제들과는 다른  유형이어서 어떻게 하나 무척 고민했었고 결론부터 말하자면 구글신의 도움을 받았다.

 

우선 내가 아는 방식으로 문제를 불어보았으나 처참히 실패했다.

#include <stdio.h>
int main(){
    int a, num,hap=0;
    scanf("%d",&a);
    scanf("%d",&num); //숫자를 다 같이 받아서
    for(int i=0;i<a;i++){ //하나씩 쪼개서 합을 구함
        hap+=num%10;
        num/=10;
    }
    printf("%d",hap);
}

 

이후 아무리 생각해보아도 공백 없이 한자리 숫자씩 받을 수 있는 방법이 생각나지 않았고

결국 구글에 쳐봤는데 생각보다 쉬운 해결방법이었다.

#include <stdio.h>
int main(){
    int a, num,hap=0;
    scanf("%d",&a);
    for(int i=0;i<a;i++){
        scanf("%1d",&num); //입력 자리수를 하나로 제한해서 받기
        hap+=num;
    }
    printf("%d",hap);
}

 

%d 사이에 숫자를 넣는거는 그저 자리를 맞추기 위해, 구구단을 만들 때 쓰는 방법이라고만 생각했었지만 새로운 응용법을 알게되서 너무 좋다!!

 

이것도 나중에 유용히 사용할 수 있는 방법인거같다