티스토리 뷰
문제
두 자연수 A와 B가 주어진다. 이때, A+B, A-B, A*B, A/B(몫), A%B(나머지)를 출력하는 프로그램을 작성하시오.
입력
두 자연수 A와 B가 주어진다. (1 ≤ A, B ≤ 10,000)
출력
첫째 줄에 A+B, 둘째 줄에 A-B, 셋째 줄에 A*B, 넷째 줄에 A/B, 다섯째 줄에 A%B를 출력한다.
예제 입력
7 3
예제 출력
10
4
21
2
1
해설
c 언어에서 사용하는 연산자에 관한 문제이다. 기본적인 사칙 연산자와 함께 나머지 연산자를 정학히 알고 있는지가 관건이다. 사소한 부분이나 대체로 다른 프로그래밍 언어에서도 비슷한 기호를 사용하고 있으니 정확히 숙지하자.
+
: 덧셈-
: 뺄셈*
: 곱셈/
: 나눗셈%
: 나머지
사직 연산자는 일반적인 컴퓨팅 때 사용하는 기호와 동일해서 이미 익숙할지도 모르겠다. 일반적인 사칙 연산ㅇ 규칙이 그대로 적용되며 ( )
를 통해 연산 순서를 바뀌는 것동 크게 다르지 않다. 여기서 눈여겨봐야 할 기호는 %
이다. 일반적인 쓰임으로는 퍼센트를 나타내지만 연산자로서는 나머지 연산을 수행한다. 즉 나눗셈을 수행해서 몫이 아닌, 나머지를 반환한다. 따라서 9 % 2
를 수행하면 나머치인 1을 반환하는 것이다. 나눗셈을 하면 몫과 나머지가 모두 나올 텐데 굳이 이런 연산자가 필요할까 싶겠지만 굳이 만들었다면 이유가 있게 마련이다. 그 이유는 프로그래밍을 익히다 보면 자연스레 깨닫게 될 것이다.
c 언어는 없지만 파이썬(python3)에는 //
연산자도 있다. 이는 연산자는 %
연산자와 반대로 나눗셈의 몫만을 반환한다. 위와 같이 9 % 2
연산을 수행하여 그 몫인 4만을 반환하는 연산이다. 이 외에도 **
연산자는 거듭제곱 연산을 수행한다. 즉 10^3^과 같은 연산이 10 ** 3
으로 표현된다. 이 거듭제곱 연산자는 c 언어에는 없으니 애써 찾으려고 헤매지 말자.
c 언에어서 거듭제곱 연산은 pow()
함수를 통해 이루어진다. 즉 x = pow(10.0, 3.0)
과 같은 처리로 거듭제곱 연산값을 x에 반환할 수 있다. 이야기가 길어지는데 pow()를 쓰기 위해서는 헤더로 #include <math.h>
를 선언해 주어야 한다는 점도 잊지 말아야 한다. 자세한 설명은 관련 문제 풀이에서.
c 언어에는 사칙 연산자 외에도 여러 연산자들이 존재한다. 여기서는 연산자 종류 정도만 맛보도록 하자.
- 사칙 연산자
- 대입 연산자
- 증감 연산자
- 관계 연산자
- 논리 연산자
- 비트 연산자
우선 이 문제에서는 사칙 연산자만을 중점적으로 다루었다. 연산자가 여러 가지이므로 이와 관련해서 학습해야 하는 부분이 바로 연산자 우선 순위이다. 단순한 연산에서는 문제가 일어나지 않는데 여러 연산자를 겹쳐 쓰는 경우에는 의도하지 않을 결과가 반환되거나 의도한 결과를 내지 못하는 문제가 발생할 수 있다. 게다가 그 이유를 바로 알아채지 못할 수 있으므로 연산자를 겹쳐 사용하는 습관이 있는 사람이라면 필히 주목해야 할 부분이겠다.
소스 코드: c
#include <stdio.h>
int main()
{
int first_num, sec_num;
scanf("%d %d", &first_num, &sec_num);
printf("%d\n", first_num + sec_num);
printf("%d\n", first_num - sec_num);
printf("%d\n", first_num * sec_num);
printf("%d\n", first_num / sec_num);
printf("%d\n", first_num % sec_num);
return 0;
}
주의해야 할 부분은 scanf()
에서 입력을 받을 변수명 앞에 반드시 &
연산자를 사용해야 한다는 점이다. 다른 언어에 익숙한 사람들도 자주 하는 실수다. 또 print()
안에서 이루어진는 나눗셈 연산은 결과를 정수로 반환했다는 점이다.
소스 코드: python3
first_num, sec_num = map(int, input().split())
print(first_num + sec_num)
print(first_num - sec_num)
print(first_num * sec_num)
print(first_num // sec_num)
print(first_num % sec_num)
파이썬에서는 나눗셈 연산자를 하면 실수형으로 그 결과를 반환하므로 문제에서 지정한 정수형으로 반환되지 않는다. 정수형 반환을 위해서 //
연산자를 사용하였다.
'Python > 심사문제' 카테고리의 다른 글
백준(BAEKJOON): 윤년 확인하기(2753번) (0) | 2019.12.12 |
---|---|
백준(BAEKJOON): 곱셈(2588번) (0) | 2019.12.11 |
백준(BAEKJOON): 등록(7287번) (0) | 2019.12.11 |
백준(BAEKJOON): 고양이(10171번) (0) | 2019.12.11 |
파이썬 도장 심사문제(Unit 41) 풀이(judge_coroutine.py) (0) | 2019.11.11 |
- Total
- Today
- Yesterday
- word
- 소수
- python3
- words
- PyQt5
- judge
- 리규찬
- 유래
- QLabel
- C
- Tistory
- 리찬규
- MacOS
- tips
- 백준
- baekjoon
- locallibrary
- books
- QLineEdit
- django
- NK
- Mac
- QComboBox
- 어원
- QGridLayout
- BOJ
- Python
- setText()
- 북한말
- QtDesigner
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |