7번 사칙연산 응용

문제

준하는 사이트에 회원가입을 하다가 joonas라는 아이디가 이미 존재하는 것을 보고 놀랐다. 준하는 놀람을??!로 표현한다. 준하가 가입하려고 하는 사이트에 이미 존재하는 아이디가 주어졌을 때, 놀람을 표현하는 프로그램을 작성하시오.

 

입력

첫째 줄에 준하가 가입하려고 하는 사이트에 이미 존재하는 아이디가 주어진다. 아이디는 알파벳 소문자로만 이루어져 있으며, 길이는 50자를 넘지 않는다.

 

출력

첫째 줄에 준하의 놀람을 출력한다. 놀람은 아이디 뒤에 ??!를 붙여서 나타낸다.

 

문제를 정리하면 채점시 이미 존재하는 아이디가 입력되고, 입력한 값 뒤에 ??! 를 붙여서 출력하면 된다.

 

C++

#include <iostream>
#include <string>
using namespace std;
int main(){
    string id;
    cin >> id;
    cout << id+"??!";
    return 0;
}

 

입력받은 문자열 뒤에 "??!"를 붙여서 출력한다.

 

C#

using System;
class Program{
    static void Main(string[] args){
        string id = Console.ReadLine();
        Console.WriteLine(id+"??!");
    }
}


Python

id = input();
print(id+"??!")

 

728x90
반응형

6번

문제

두 자연수 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를 출력한다.

 

C++

#include <iostream>
using namespace std;
int main(){
    int a,b;
    cin >> a;
    cin >> b;
    cout << a+b << endl;
    cout << a-b << endl;
    cout << a*b << endl;
    cout << a/b << endl;
    cout << a%b << endl;
    
    return 0;
}

 

줄바꾸기 endl 사용

 

C#

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으로 반환하기 때문에 문제에서 몫만을 출력해야 하고 이를 위해서는 몫을 구하는 연산자 '//'를 사용해야 한다.

 

728x90
반응형

1번

문제

Hello World! 를 출력하시오.

 

출력

Hello World! 를 출력하시오.

 

C++

#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자리까지의 정확도를 가진다.

 

그 이상의 자릿수를 사용하기 위해서는 별도의 모듈인 decimal을 사용해야 한다.

 

 

728x90
반응형

매일 보던 것만 보고, 쓰던 것만 쓰다 보니 점점 머리가 굳어가는 게 느껴진다.

 

더 굳어지기 전에 좀 더 활발하게 뇌가 굴러가도록 자극을 줄 필요가 있다고 생각해서 시작하기로 한다.

 

예전에 했을 때는 한 가지 언어에만 집중해서 했다면 이번에는 최대한 새로운 언어들도 배우면서 테스트도 하는 방식으로 진행해 볼 것이다.

728x90
반응형

+ Recent posts