목록코딩 테스트 준비/c++ (11)
개발 공부
이 문제는 그냥 풀려면 풀 수 있는데... #include int main() { int x,y; scanf("%d %d",&x,&y); int arr1[x][y]; int arr2[x][y]; int ans[x][y]; for(int i=0; i
우선 함수를 모를때! #include int main() { int x[5],num=0; for(int i=0; i
c++과 파이썬의 절댓값을 구현할 수 있는 내장함수 abs를 사용하면 된다! 우선 c++의 경우 math.h를 불러와서 abs를 사용했다 #include #include int main() { long x,y; long ans; scanf("%ld %ld",&x,&y); ans = x-y; printf("%ld",abs(ans)); } 범위가 -2,000,000,000~2,000,000,000이라서 x,y는 int형으로 되지만 연산값이 int형을 벗어나 long타입을 사용했습니다! 파이썬의 경우 a,b = map(int, input().split(" ")); ans = a-b; print(abs(ans)); 요런식으로 abs함수를 사용해 쉽게 구현 가능하다!
앞전의 글인 엄청난 부자2 와같이 c++로 하게되면 어려워지는 문제! 조건을 살펴보면 10진수로 1,000자리를 넘지 않으며 여기서 1000자리를 보고 그냥 1000을 넘지 않는다고 생각을 해서 왜 안될까 했는데 다시 살펴보니.... 자리수...? 1뒤로 0이 999개???? 역시 오버플로우... 최대로 들어올 수 있는수가 너무 크다.. c++에서 int형은 대략 -21억 ~ 21억까지 표현가능 => 최대 10자리수 까지 표현가능 파이썬에서는 자체적으로 Big integer를 지원해줘 따로 처리할 필요없이 짧게 A = int(input()) B = int(input()) print(A+B) print(A-B) print(A*B) 이렇게 구현가능...! 나같은 코딩애기는 자리수 나오면 파이썬으로....ㅠㅠ
브론즈5...? 입력값의 조건이 첫째 줄에는 최백준 조교가 가진 돈 n과 돈을 받으러 온 생명체의 수 m이 주어진다. (1 ≤ m ≤ n ≤ 10^1000, m과 n은 10진수 정수) >> c에서는 10^1000이라는 큰 수를 정수형으로 표현할 수 없음... (10^20만 하더라도 100000000000000000000 , long의 범위는 2,147,483,647) 따라서 오버플로우로 인해 문제가 틀린게 됨!! 브론즈 5인 이유는 파이썬으로 하면 쉬워진다!!! 파이썬은 정수 연산을 할 때 처음에는 int자료형을 사용하다가 정수 오버플로우가 발생할 것 같으면 자동으로 long을 사용하는 방식을 통해 정수 오버플로우의 발생을 막는다, >> long은 무제한의 자릿수를 제공하는 정수형을 의미하는 Arbitr..