사칙연산 36

백준 18108번: 1998년생인 내가 태국에서는 2541년생?!

https://www.acmicpc.net/problem/18108 18108번: 1998년생인 내가 태국에서는 2541년생?! ICPC Bangkok Regional에 참가하기 위해 수완나품 국제공항에 막 도착한 팀 레드시프트 일행은 눈을 믿을 수 없었다. 공항의 대형 스크린에 올해가 2562년이라고 적혀 있던 것이었다. 불교 국가인 태국 www.acmicpc.net 서기 년도로 1998년은 불기 연도로 2541년이므로, 입력에 그 차만큼 더한 값을 출력한다. #include int main() { int y; scanf("%d", &y); // 같은 해에 태국은 2541년, 한국은 1998년이었으므로 그 차만큼 더한 값을 출력 printf("%d\n", y - 2541 + 1998); return 0..

백준 16394번: 홍익대학교

https://www.acmicpc.net/problem/16394 16394번: 홍익대학교 입력으로 첫 줄에 특정 년도를 알리는 정수 N이 주어진다. 정수 N은 1,946 부터 1,000,000 사이의 값이다. (1,946 ≤ N ≤ 1,000,000) www.acmicpc.net 개교한 해가 1946이므로 년도 N은 개교 (N - 1946)주년이다. #include int main() { int N; // 개교한 해가 1946이므로 년도 N은 개교 (N - 1946)주년이다 scanf("%d", &N); printf("%d\n", N - 1946); return 0; }

백준 15792번: A/B - 2

https://www.acmicpc.net/problem/15792 15792번: A/B - 2 첫째 줄에 A와 B가 주어진다. (0 < A, B ≤ 10,000) www.acmicpc.net A와 B를 입력받아 A / B를 출력하되, 손으로 소수점 나눗셈 계산을 하듯이 소숫점 계산을 진행한다. #include int main() { // A, B: 두 수 A와 B를 저장할 공간, i: 소수점 연산에 사용할 변수 int A, B, i = 0; scanf("%d %d", &A, &B); // 소수점 앞의 정수 부분을 출력한다 printf("%d", A / B); // A % B가 0이 아니라면, 즉 A / B의 결과가 정수가 아니라면 if (A % B) { // A를 B로 나눈 나머지를 A에 저장한다 A ..

백준 15740번: A+B - 9

https://www.acmicpc.net/problem/15740 15740번: A+B - 9 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. www.acmicpc.net 수의 절댓값의 최댓값이 10^10000이므로 C 혹은 C++에 존재하는 타입으로는 A와 B를 저장할 수 없다. 따라서 수를 한 자리씩 입력받아 배열에 저장한 뒤, 가장 작은 자리부터 한 자리씩 더해 덧셈을 구현해야 한다. 또한, 음수가 입력으로 주어질 수 있으므로 음수의 경우는 보수로 전환하여 양수간의 덧셈으로 계산해야 한다. 덧셈의 결과가 음수일 때 역시 보수를 취해 음수꼴로 출력할 수 있도록 한다. #include #define SIZE 10001 void swap(char &a, char &b) { ..

15596번: 정수 N개의 합

https://www.acmicpc.net/problem/15596 15596번: 정수 N개의 합 C++17, Java 8, Python 3, C11, PyPy3, C99, C++98, C++11, C++14, Go, C99 (Clang), C++98 (Clang), C++11 (Clang), C++14 (Clang), C11 (Clang), C++17 (Clang) www.acmicpc.net int형 벡터 a를 인자로 받아 a의 모든 원소를 더하는 함수를 작성한다. #include long long sum(std::vector &a) { long long ans = 0; // a의 모든 성분을 더한 뒤 반환 for (auto i : a) ans += i; return ans; }

15552번: 빠른 A+B

https://www.acmicpc.net/problem/15552 15552번: 빠른 A+B 첫 줄에 테스트케이스의 개수 T가 주어진다. T는 최대 1,000,000이다. 다음 T줄에는 각각 두 정수 A와 B가 주어진다. A와 B는 1 이상, 1,000 이하이다. www.acmicpc.net 입출력 방식에 유의하며 각 테스트 케이스의 정답을 출력한다. #include using namespace std; int main() { // 입출력 속도 향상 ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); // T: 테스트 케이스의 개수, A, B: 더할 두 수 int T, A, B; // 테스트 케이스를 입력받아 각 테스트 케이스의 결과를 출력 for..

15353번: 큰 수 A+B (2)

https://www.acmicpc.net/problem/15353 15353번: 큰 수 A+B (2) C++17, C11, C99, C++98, C++11, C++14, C99 (Clang), C++98 (Clang), C++11 (Clang), C++14 (Clang), C11 (Clang), C++17 (Clang) www.acmicpc.net 수의 최대치가 10^10000이므로 C 혹은 C++에 존재하는 타입으로는 A와 B를 저장할 수 없다. 따라서 수를 한 자리씩 입력받아 배열에 저장한 뒤, 가장 작은 자리부터 한 자리씩 더해 덧셈을 구현해야 한다. #include #define MAX 10001 #define MOD 10 void swap(char &a, char &b) { char temp ..

13458번: 시험 감독

https://www.acmicpc.net/problem/13458 13458번: 시험 감독 첫째 줄에 시험장의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 각 시험장에 있는 응시자의 수 Ai (1 ≤ Ai ≤ 1,000,000)가 주어진다. 셋째 줄에는 B와 C가 주어진다. (1 ≤ B, C ≤ 1,000,000) www.acmicpc.net 각 시험장에 총감독관은 반드시 한 명이 있으므로, 각 시험장에서 총감독관이 감시 가능한 응시자는 제외한다. 그 후 응시자가 남았다면, 필요한 부감독관의 수는 각 강의실에서 총감독관이 감시하지 못하는 응시자 A_i와 부감독관 한 명이 감시 가능한 응시자 수 C에 대해 A[i] / C + (bool)(A[i] % C) 명이 된다. 따라서 모든 ..

11720번: 숫자의 합

https://www.acmicpc.net/problem/11720 11720번: 숫자의 합 첫째 줄에 숫자의 개수 N (1 ≤ N ≤ 100)이 주어진다. 둘째 줄에 숫자 N개가 공백없이 주어진다. www.acmicpc.net 숫자 N개가 공백 없이 주어지므로, 주어지는 어느 숫자가 두 자리 이상일 경우 입력이 모호해진다. 따라서 모든 입력은 한 자리 숫자이므로, 모든 한 자리 숫자를 입력받아 그 합을 저장한 뒤 출력한다. #include int main() { char c; int sum = 0; // N은 입력받을 필요 없다 scanf("%*d%*c"); // 숫자가 공백 없이 주어지므로 주어지는 각 숫자는 한 자리 수이다 // 모든 한 자리 수를 입력받아 sum에 그 합을 저장한 뒤 출력 whil..

11022번: A+B - 8

https://www.acmicpc.net/problem/11022 11022번: A+B - 8 각 테스트 케이스마다 "Case #x: A + B = C" 형식으로 출력한다. x는 테스트 케이스 번호이고 1부터 시작하며, C는 A+B이다. www.acmicpc.net 테스트 케이스의 수를 입력받은 뒤, 각 테스트 케이스에서 더할 두 수를 입력받고 형식에 맞춰 두 수의 합을 출력한다. #include int main() { // T: 테스트 케이스의 수, A, B: 더할 두 수 int T, A, B; // 테스트 케이스의 수를 입력받은 뒤 각 테스트 케이스에 대해 scanf("%d", &T); for (int i = 1; i