반응형
뭔가 길게 적혀있지만, 결국 두 정수를 입력받으면 몫과 나머지를 출력하는 코드를 작성하는 문제입니다.
이거도 연산자를 이용하면 간단하게 풀 수 있습니다.
#include <stdio.h>
int main(void) {
int money, person;
scanf("%d", &money);
scanf("%d", &person);
printf("%d\n", money/person);
printf("%d\n", money%person);
return 0;
}
이렇게 또 하나를 해결했다... 싶었을 때
?????????? 왜 틀렸다고 나오는거지???
잠깐 머리가 멍해져서 혹시 오타가 있나 코드를 다시 봤지만 오타는 없었고 코드도 잘 작동되었습니다.
그런데 왜 틀렸다는 걸까??
이유는 바로 입력에 있었습니다.
입력값의 범위가 10의 1000제곱까지 될 수 있다는 것입니다.
C언어에서 정수형의 표현 범위는 long을 이용해도 2,147,483,647 정도로 10의 1000제곱에 비하면 터무니없이 작은 수 입니다.
그래서 계산할 수 있는 범위를 벗어나서 오버플로우가 발생하고, 그래서 출력값이 잘못 나오는 겁니다.
브론즈 문제인데 이렇게 어렵나?? 싶어 잠깐 검색을 해보니 글 한 줄이 눈에 띄였습니다.
파이썬은 큰 수를 자동으로 처리할 수 있다.
이 글을 보자마자 "이 문제는 C언어가 아니라 파이썬으로 풀어야 하는구나..." 싶었습니다.
어쩐지 브론즈 문제가 이렇게 복잡할리가....
money, people = map(int, input().split())
print(money//people)
print(money%people)
파이썬으로 하니 C언어보다 코드가 간결해졌습니다.
반응형
'solved > 브론즈' 카테고리의 다른 글
solved 브론즈 백준 2845번: 파티가 끝나고 난 뒤 (0) | 2021.09.13 |
---|---|
solved 브론즈 백준 2475번: 검증수 (0) | 2021.09.13 |
solved 브론즈 백준 2338번: 긴자리 계산 (0) | 2021.09.09 |
solved 브론즈 백준 1550번: 16진수 (0) | 2021.09.09 |
solved 브론즈 백준 1000번: A+B (0) | 2021.08.23 |