9oormthon 구현 3일차: 합 계산기

PEA은하·2023년 8월 16일
post-thumbnail

Problem


문제 설명

  1. 숫자1, 연산자 기호, 숫자2를 각각 입력받고
  2. 연산자의 기호에 맞게 사칙연산을 수행한다.

필요한 함수

PythonC++C
if문if 조건1:
 코드
elif 조건2:
 코드
else:
 코드
if (조건1){
 코드;
} else if (조건2){
 코드;
} else {
 코드;
}
if (조건1){
 코드;
} else if (조건2){
 코드;
} else {
 코드;
}
case문-switch(var){
case con1:
 코드;
 break;
case con2:
 코드;
 break;
}
switch(var){
case con1:
 코드;
 break;
case con2:
 코드;
 break;
}

Submitted Code


Python

 1 T = int(input())
 2
 3 answer = 0
 4 for _ in range(T):
 5     num1, op, num2 = input().split()
 6     num1, num2 = int(num1), int(num2)
 7     if op == "+":
 8         answer += num1 + num2
 9     elif op == "-":
10         answer += num1 - num2
11     elif op == "*":
12         answer += num1 * num2
13     elif op == "/":
14         answer += num1 // num2
15
16 print(answer)

C++

 1 #include <iostream>
 2 #include <string>
 3 using namespace std;
 4 int main() {
 5     int T;
 6     cin >> T;
 7	
 8     int answer = 0;
 9     int num1, num2;
10     char op[2] = {'+', '\0'};        // 문자열 끝에는 항상 NULL 문자 필요!!
11     for (int i = 0; i < T; i++){
12         cin >> num1 >> op >> num2;
13         if (strcmp(op, "+") == 0)
14             answer += (num1 + num2);
15         else if (strcmp(op, "-") == 0)
16             answer += (num1 - num2);
17         else if (strcmp(op, "*") == 0)
18             answer += (num1 * num2);
19         else
20             answer += (num1 / num2);
21     }
22
23     cout << answer;
24     return 0;
25 }

C

 1 #include <stdio.h>
 2 int main() {
 3     int T;
 4     int num1, num2;
 5     char op[2];
 6     int i, answer = 0;
 7
 8     scanf("%d", &T);
 9 	
10     for (i = 0; i < T; i++){
11         scanf("%d %s %d", &num1, op, &num2);
12 		
13     if (strcmp(op, "+") == 0)
14         answer += num1 + num2;
15     else if (strcmp(op, "-") == 0)
16         answer += num1 - num2;
17     else if (strcmp(op, "*") == 0)
18         answer += num1 * num2;
19     else
20         answer += num1 / num2;
21     }
22     printf("%d", answer);
23     return 0;
24 }

Code Review


Python

제출 코드와 동일

C++

1. 공백이나 개행을 기준으로 입력을 분리

int num1, num2;
char op;
cin >> num1 >> op >> num2;

여러 줄로 입력되어도 한 번에 받을 수 있다.

2. 문자 1개는 ' '(작은 따옴표) 사용

char op = '+';
if (op == '+') ans += num1 + num2;
if (op == '-') ans += num1 + num2;
if (op == '*') ans += num1 + num2;
if (op == '/') ans += num1 + num2;

char 자료형 사용했을 때 오류 발생 이유

Code

char op;
cin >> op;
if (op == "+")
  • 'a'는 char 자료형
  • "a"는 char[2] 자료형 ('a' + '\0')

3. 반복문 조건에 증감연산자 사용

while (T--) {}

후위 연산자 순서
1. while (T) 조건 확인
2. T -= 1
3. while문 내부 코드 실행

Challenge Review

C/C++에서 문자열 받기 실패했다.
NULL 문자가 늦게 생각났다. 문자열 다룰 때는 항상 신경쓰기.

Reference

  • 구름톤 챌린지 언어별 문제 해설 - Python, C++

0개의 댓글