시험 점수를 입력받아 90 ~ 100점은 A, 80 ~ 89점은 B, 70 ~ 79점은 C, 60 ~ 69점은 D, 나머지 점수는 F를 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 시험 점수가 주어진다. 시험 점수는 0보다 크거나 같고, 100보다 작거나 같은 정수이다.
출력
시험 성적을 출력한다.
C++
#include <iostream>
using namespace std;
int main(){
int score;
cin >> score;
char result;
if (score >= 90) {
result = 'A';
}
else if (score >= 80){
result = 'B';
}
else if (score >= 70){
result = 'C';
}
else if (score >= 60){
result = 'D';
}
else {
result = 'F';
}
cout << result;
return 0;
}
C#
using System;
class Program{
static void Main(string[] args){
int score = int.Parse(Console.ReadLine());
char result;
if (score >= 90)
result = 'A';
else if (score >= 80)
result = 'B';
else if (score >= 70)
result = 'C';
else if (score >= 60)
result = 'D';
else
result = 'F';
Console.WriteLine(result);
}
}
Python
score = int(input());
if score >= 90:
result = 'A'
elif score >= 80:
result = 'B'
elif score >= 70:
result = 'C'
elif score >= 60:
result = 'D'
else:
result = 'F'
print(result);
파이썬에서 조건문을 사용할 때는 들여 쓰기에 주의해야 한다.
Node.js
const fs = require('fs');
const inputData = fs.readFileSync('/dev/stdin').toString().trim();
const score = parseInt(inputData, 10);
let result;
if (score >= 90)
result = 'A';
else if (score >= 80)
result = 'B';
else if (score >= 70)
result = 'C';
else if (score >= 60)
result = 'D';
else
result = 'F';
console.log(result);
#include <iostream>
#include <string>
using namespace std;
int main(){
int a, b;
cin >> a;
cin >> b;
string result = "";
if (a > b)
result = ">";
else if (a < b)
result = "<";
else
result = "==";
cout << result;
return 0;
}
C#
using System;
class Program{
static void Main(string[] args){
string input = Console.ReadLine();
string[] arr = input.Split(' ');
int a = int.Parse(arr[0]);
int b = int.Parse(arr[1]);
if (a > b) input = ">";
else if (a < b) input = "<";
else input = "==";
Console.WriteLine(input);
}
}
Python
strInput = input()
arrInput = strInput.split(' ')
a = int(arrInput[0])
b = int(arrInput[1])
if a > b:
c = ">"
elif a < b:
c = "<"
else:
c = "=="
print(c);
파이썬의 경우 조건문 작성 시
if 조건 :
elif 조건 :
else :
방식으로 작성한다. 그리고 중요한 점은 파이썬의 변수의 범위는 함수 단위로 이루어지기 때문에 조건문 내부에서 선언된 c는 외부에서도 접근이 가능하다. 하지만 함수 내에서 변수를 선언했다면 외부에서 접근할 수 없다.
Node.js
const readline = require('readline');
const rl = readline.createInterface({
input:process.stdin,
output:process.stdout
});
rl.question('', (answer) =>{
let input = answer;
let arr = input.split(' ');
let a = parseInt(arr[0], 10);
let b = parseInt(arr[1], 10);
let result;
if (a > b) {
result = ">";
}
else if (a < b) {
result = "<";
}
else {
result = "==";
}
process.stdout.write(result);
rl.close();
});
node.js 에서 입력은 모듈을 사용하여 처리한다.
1. 'readline' 모듈을 사용하여 입력 인터페이스를 생성한다.
2. 'rl.question'을 사용하여 사용자로부터 숫자를 입력받는다.
더 축약한 코드
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
rl.question('', (answer) => {
const [a, b] = answer.split(' ').map(Number);
const result = (a > b) ? '>' : (a < b) ? '<' : '==';
process.stdout.write(result);
rl.close();
});
꼬마 정민이는 이제 A + B 정도는 쉽게 계산할 수 있다. 이제 A + B + C를 계산할 차례이다!
입력
첫 번째 줄에 A, B, C (1 ≤ A, B, C ≤ 10^12)이 공백을 사이에 두고 주어진다.
출력
A+B+C의 값을 출력한다.
C++
#include <iostream>
using namespace std;
int main(){
long long a,b,c;
cin >> a;
cin >> b;
cin >> c;
cout << a+b+c;
return 0;
}
int 타입은 최대 - 2^31 ~ 2^31−1까지의 정수를 저장할 수 있는데 입력받을 수 있는 수의 범위는 10^12이므로 이를 저장할 수 있는 long long 타입을 사용한다. (long long은 -2^63 ~ 2^63 −1까지)
C#
using System;
class Program{
static void Main(string[] args){
string str = Console.ReadLine();
string[] arr = str.Split(" ");
long a = long.Parse(arr[0]);
long b = long.Parse(arr[1]);
long c = long.Parse(arr[2]);
Console.WriteLine(a+b+c);
}
}
C#의 int 범위는 - 2^31 ~ 2^31-1, long 범위는 -2^31 ~ 2^31-1이다
Python
str = input()
arr = str.split(' ')
a = int(arr[0])
b = int(arr[1])
c = int(arr[2])
print(a+b+c)
파이썬의 경우 int는 임의 정밀도로 정해진 범위가 없고 사용할 수 있는 만큼 값을 가질 수 있다.
ICPC Bangkok Regional에 참가하기 위해 수완나품 국제공항에 막 도착한 팀 레드시프트 일행은 눈을 믿을 수 없었다. 공항의 대형 스크린에 올해가 2562년이라고 적혀 있던 것이었다. 불교 국가인 태국은 불멸기원(佛滅紀元), 즉 석가모니가 열반한 해를 기준으로 연도를 세는 불기를 사용한다. 반면, 우리나라는 서기 연도를 사용하고 있다. 불기 연도가 주어질 때 이를 서기 연도로 바꿔 주는 프로그램을 작성하시오.
입력
서기 연도를 알아보고 싶은 불기 연도 y가 주어진다. (1000 ≤ y ≤ 3000)
출력
불기 연도를 서기 연도로 변환한 결과를 출력한다.
문제를 풀기 위해서는 불기와 서기의 차이에 대한 정보가 필요한데 제목에 힌트가 있다. 두 값의 차인 543의 값을 사용해서 불기를 서기로 표시할 수 있다.
"불기 - 543 = 서기"
C++
#include <iostream>
using namespace std;
int main(){
int input;
cin >> input;
cout << input - 543;
}
C#
using System;
class Program{
static void Main(string[] args){
string input = Console.ReadLine();
int val = int.Parse(input);
Console.WriteLine(val - 543);
}
}
Python
str = input()
val = int(str)
print(val - 543)
C#과 Python의 경우에는 입력은 문자열로만 반환되기 때문에 이를 정수계산하기 위해서는 타입 변환의 과정이 필요하다.
9번 "나머지"
문제
(A+B)%C는 ((A%C) + (B%C))%C 와 같을까? (A×B)%C는 ((A%C) × (B%C))%C 와 같을까? 세 수 A, B, C가 주어졌을 때, 위의 네 가지 값을 구하는 프로그램을 작성하시오.
입력
첫째 줄에 A, B, C가 순서대로 주어진다. (2 ≤ A, B, C ≤ 10000)
출력
첫째 줄에 (A+B)%C, 둘째 줄에 ((A%C) + (B%C))%C, 셋째 줄에 (A×B)%C, 넷째 줄에 ((A%C) × (B%C))%C를 출력한다.
using System;
class Program{
static void Main(string[] args){
string input = Console.ReadLine();
string[] arr = input.Split(" ");
int a = int.Parse(arr[0]);
int b = int.Parse(arr[1]);
int c = int.Parse(arr[2]);
Console.WriteLine((a+b)%c);
Console.WriteLine(((a%c)+(b%c))%c);
Console.WriteLine((a*b)%c);
Console.WriteLine(((a%c)*(b%c))%c);
}
}
Python
str = input();
arr = str.split(" ");
a = int(arr[0]);
b = int(arr[1]);
c = int(arr[2]);
print((a+b)%c);
print(((a%c)+(b%c))%c);
print((a*b)%c);
print(((a%c)*(b%c))%c);
이 문제는 받아쓰기만 틀리지 않고 잘하면 어려움이 없는 문제였다.
10번 "곱셈"
문제
(세 자리 수) × (세 자리 수)는 다음과 같은 과정을 통하여 이루어진다.
(1)과 (2)위치에 들어갈 세 자리 자연수가 주어질 때 (3), (4), (5), (6)위치에 들어갈 값을 구하는 프로그램을 작성하시오.
입력
첫째 줄에 (1)의 위치에 들어갈 세 자리 자연수가, 둘째 줄에 (2)의 위치에 들어갈 세 자리 자연수가 주어진다.
출력
첫째 줄부터 넷째 줄까지 차례대로 (3), (4), (5), (6)에 들어갈 값을 출력한다.
우선 입력받은 두 값을 곱셈하여 저장해 놓고 첫 번째 입력받은 값을 기준으로 하고 두 번째 입력값을 자릿수별로 잘라서 변수에 저장한다. 그리고 각 자릿수마다 기준 값과 곱한 값을 출력하고 처음 계산한 곱셈을 출력하면 될듯하다.
C++
#include <iostream>
#include <string>
using namespace std;
int main(){
int val1;
int val2;
cin >> val1;
cin >> val2;
int result4 = val1*val2;
string str = to_string(val2);
int a = str[2] - '0';
int b = str[1] - '0';
int c = str[0] - '0';
int result1 = val1*a;
int result2 = val1*b;
int result3 = val1*c;
cout << result1 << endl;
cout << result2 << endl;
cout << result3 << endl;
cout << result4 << endl;
return 0;
}
C#
using System;
class Program{
static void Main(string[] args){
string str_1 = Console.ReadLine();
string str_2 = Console.ReadLine();
int val_1 = int.Parse(str_1);
int val_2 = int.Parse(str_2);
int a = (int)char.GetNumericValue(str_2[2]);
int b = (int)char.GetNumericValue(str_2[1]);
int c = (int)char.GetNumericValue(str_2[0]);
int result_1 = val_1 * a;
int result_2 = val_1 * b;
int result_3 = val_1 * c;
int result_4 = val_1 * val_2;
Console.WriteLine(result_1);
Console.WriteLine(result_2);
Console.WriteLine(result_3);
Console.WriteLine(result_4);
}
}
C#에서 단일 문자의 경우 int.Parse는 에러가 발생한다. 따라서 문자를 정수로 전환하기 위해서 char.GetNumericValue를 사용한다.
또는 문자가 숫자일 경우에는 아스키코드를 활용해서 정수로 변환할 수 있다.
아스키코드에서 '0' 문자는 48이다. 그리고 그 뒤로 연속으로 값이 증가하는데 즉 '1' - '0' = 49 - 48 이므로 결과는 1로 정수 값을 구할 수 있게 된다.
int a = (int)char.GetNumericValue(str_2[2]);
int b = (int)char.GetNumericValue(str_2[1]);
int c = (int)char.GetNumericValue(str_2[0]);
// ASCII
int a = str_2[2] - '0';
int b = str_2[1] - '0';
int c = str_2[0] - '0';
Python
str_1 = input()
str_2 = input()
val_1 = int(str_1)
val_2 = int(str_2)
a = int(str_2[2])
b = int(str_2[1])
c = int(str_2[0])
result_1 = val_1 * a
result_2 = val_1 * b
result_3 = val_1 * c
result_4 = val_1 * val_2
print(result_1)
print(result_2)
print(result_3)
print(result_4)
using System;
class Program{
static void Main(string[] args){
string input = Console.ReadLine();
string[] arr_input = input.Split(' ');
int a = int.Parse(arr_input[0]);
int b = int.Parse(arr_input[1]);
Console.WriteLine(a+b);
Console.WriteLine(a-b);
Console.WriteLine(a*b);
Console.WriteLine(a/b);
Console.WriteLine(a%b);
}
}
ReadLine으로 입력을 한 줄로 받고 string.Split을 사용해서 공백으로 두 값을 구분하여 사용한다.
Python
str = input()
arr = str.split(' ')
a = int(arr[0])
b = int(arr[1])
print(a+b, a-b, a*b, a//b, a%b, sep='\n')
파이썬의 경우 '/' , '//' 연산자가 존재한다.
앞의 두 언어들은 연산하는 두 값이 모두 int 타입이기 때문에 / 연산자를 사용하여 계산하게 되면 결과도 정수형으로 반환되기 때문에 소수점은 버려지게 된다. 하지만 파이썬의 경우 정수형간의 나눗셈은 float으로 반환하기 때문에 문제에서 몫만을 출력해야 하고 이를 위해서는 몫을 구하는 연산자 '//'를 사용해야 한다.
#include <iostream>
using namespace std;
int main(){
cout << "Hello World!";
return 0;
}
C++ 너무 오랜만에 하다 보니 처음에 입출력 라이브러리 이름이 기억이 안 났다.
iosteam (input/output stream) 입력과 출력의 기능을 사용할 수 있는 라이브러리이다.
cout을 사용하려면 std:: 네임스페이스를 사용해야 하는데 이걸 생략하기 위해서 using으로 네임스페이스를 선언한다.
C#
using System;
class Program{
static void Main(string[] args){
Console.WriteLine("Hello World!");
}
}
System 네임스페이스에 포함된 Console 클래스의 함수인 WirteLine을 사용해서 문자를 출력한다.
Python
print("Hello World!")
이렇게 보니 파이썬의 간단함에 새삼스럽게 놀란다.
2번
문제
두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 A와 B가 주어진다. (0 < A, B < 10)
출력
첫째 줄에 A+B를 출력한다.
C++
#include <iostream>
using namespace std;
int main(){
int a, b;
cin >> a;
cin >> b;
cout << a + b;
}
입력받은 값을 저장하기 위한 변수 a, b 선언 후 합을 출력
C#
using System;
class Program
{
static void Main(string[] args)
{
string str = Console.ReadLine();
string[] arr = str.Split(' ');
int a = int.Parse(arr[0]);
int b = int.Parse(arr[1]);
Console.WriteLine(a + b);
}
}
채점 시 한 줄에 두 값을 모두 주기 때문에 Read 사용 시 입력을 제대로 받지 못한다.
따라서 문자열로 받은 다음 값을 잘라서 정수로 변환하여 출력하여야 한다.
Python
str = input()
arr = str.split(' ')
a = int(arr[0])
b = int(arr[1])
print(a+b)
파이썬도 마찬가지로 문자로 입력받은 다음 값을 잘라서 처리한다.
4번 문제까지는 연산 기호만 달라서 문제만 풀고 따로 남기지 않는다.
5번
문제
두 정수 A와 B를 입력받은 다음, A/B를 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 A와 B가 주어진다. (0 < A, B < 10)
출력
첫째 줄에 A/B를 출력한다. 실제 정답과 출력값의 절대오차 또는 상대오차가 10의 -9승 이하이면 정답이다.
C++
#include <iostream>
using namespace std;
int main(){
double a, b;
cin >> a;
cin >> b;
double res = a/b;
cout.precision(10);
cout << res;
}
소수점 자릿수를 정확하게 출력하기 위해서 추가 작업이 필요하다.
오차를 인정하는 범위가 있기 때문에 소수점 9자리까지 구해야 한다.
cout.precision(n)은 n자리까지 정수부+소수부의 n개까지의 수를 표시해 준다.
문제에서 대입하는 수의 범위는 나누었을 때 정수부가 1자리 이하이기 때문에 precision(10)을 하면 소수점 9자리까지 나오게 된다.
C#
using System;
class Program
{
static void Main(string[] args)
{
string str = Console.ReadLine();
string[] arr = str.Split(' ');
double a = double.Parse(arr[0]);
double b = double.Parse(arr[1]);
Console.WriteLine(a / b);
}
}
float의 정확도는 7번째 자리이기 때문에 double을 사용한다.
Python
str = input()
arr = str.split(' ')
a = float(arr[0])
b = float(arr[1])
print(a/b)
파이썬의 경우 double은 따로 없으며 float이 C의 double을 기반으로 15자리까지의 정확도를 가진다.