천천히 빛나는

백준 단계 1 : 입출력과 사칙연산 (C++) 본문

C++/BAEKJOON (C++)

백준 단계 1 : 입출력과 사칙연산 (C++)

까만콩 •ᴥ• 2023. 8. 13. 18:17

2557. Hello World!를 출력하시오.

#include <iostream>
using namespace std;
int main(){
    cout<<"Hello World!";
    return 0;
}

using namespace std; 을 사용하면 std::cout과 같이 쓰지 않아도 된다.

main은 int를 반환하는 함수이기 때문에 정수를 꼭 반환해야 한다. 0을 반환 (return)하는 이유는 프로그램이 에러 없이 잘 종료되었다는 것을 알리기 위함이다. 현재는 return 0;을 작성하지 않아도 main 함수가 알아서 0을 return 하지만 return 0;을 작성해주는 것을 추천한다.

 

 

1000. 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.

#include <iostream>
using namespace std;
int main(){
    int A, B;
    cin >> A >> B;
    cout << A + B;
}

cin >> a >> b;와 같이 계속해서 입력을 받을 수 있다.

 

 

1001. 두 정수 A와 B를 입력받은 다음, A-B를 출력하는 프로그램을 작성하시오.

#include <iostream>
using namespace std;
int main(){
    int A, B;
    cin >> A >> B;
    cout << A - B;
    return 0;
}

10998번도 마찬가지로 - 대신 *을 사용하면 된다. 사칙연산 기호는 다른 언어와 대부분 같다.

 

 

1008. 두 정수 A와 B를 입력받은 다음, A/B를 출력하는 프로그램을 작성하시오.

#include <iostream>
using namespace std;
int main() {
    double A, B;
    cin >> A >> B;
    cout << A / B;
    return 0;
}

float과 double은 둘 다 실수형 데이터 타입이다. 하지만 float은 소수점 6자리, double은 소수점 15자리까지 표현 가능하므로 double 형을 사용해야 한다. 

하지만 A / B를 바로 해줄 경우 15자리까지 나타나는 것이 아니래 0.333333까지만 나타난다.

 

#include <iostream>
using namespace std;
int main() {
    double A, B;
    cin >> A >> B;
    cout << fixed;
    cout.precision(9);
    cout << A / B;
    return 0;
}

소수점 고정 과정이 필요하다. cout.precision(n);은 전체 자리 숫자를 n개로 고정하겠다는 의미이다. cout << fixed;는 소수점 아래로 부터만 전체 숫자를 계산하겠다는 뜻이다. 

두 코드를 합쳐주면 소수점 아래 9자리까지 표현을 하라는 뜻이 된다.

 

 

10869. 두 자연수 A와 B가 주어진다. 이때, A+B, A-B, A*B, A/B(몫), A%B(나머지)를 출력하는 프로그램을 작성하시오. 

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

크게 다른 부분은 없다.

 

 

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

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

c++에서 string을 사용하기 위해서는 <string> 헤더를 #include 해주어야 한다. 

cout << id << "??!"; 대신 cout << id + "??!"; 으로 작성해주어도 문제없다.

 

 

18108. 불기 연도를 서기 연도로 변환한 결과를 출력한다.

#include <iostream>
using namespace std;
int main() {
    int y;
    cin >> y;
    cout << y - 543;
    return 0;
}

단순히 543을 빼주면 되는 문제이다.

 

 

10430. 첫째 줄에 (A+B)%C, 둘째 줄에 ((A%C) + (B%C))%C, 셋째 줄에 (A×B)%C, 넷째 줄에 ((A%C) × (B%C))%C를 출력한다.

#include <iostream>
using namespace std;
int main() {
    int A, B, C;
    cin >> A >> B >> C;
    cout << (A + B) % C << endl
        << ((A % C) + (B % C)) % C << endl
        << (A * B) % C << endl
        << ((A % C) * (B % C)) % C << endl;
    return 0;
}

endl은 \n과 같은 기능을 한다. (enter 효과)

 

 

2558. 첫째 줄부터 넷째 줄까지 차례대로 (3), (4), (5), (6)에 들어갈 값을 출력한다.

#include <iostream>
#include <string>
using namespace std;
int main() {
    int a; 
    string b;
    cin >> a >> b;
    cout << a * (b[2] - '0') << endl;
    cout << a * (b[1] - '0') << endl;
    cout << a * (b[0] - '0') << endl;
    cout << a * stoi(b) << endl;
}

내가 작성한 코드이다. 첫번째 입력으로 들어오는 정수는 분리할 필요가 없기 때문에 int 형으로 선언해주었다. 두번째 정수는 하나씩 분리해주어야 하는데, string 으로 입력 받기 때문에 int 형으로 변환하여 계산해주어야 한다. 

string[index]의 경우는 char 형으로 분리되는데, char을 int 형으로 변환하기 위해서는 '0'을 빼주면 된다. 예를 들어, char x = '1'이고 여기서 '0'을 빼게 된다면 아스키값으로 49에서 48을 빼게 되므로 1이 int 형으로 반환된다.

stoistring을 int로 변환해주는 함수이므로 char에는 사용할 수 없다. stoi는 string 헤더를 include 해야지 사용할 수 있다.

 

만약 b를 string이 아닌 char b[4];와 같이 char 형으로 선언하였다면, cstdlib의 atoi로 int 값을 바꿀 수 있다. 여기서, #include<cstdlib>를 해야하는 것을 잊으면 안된다.

 

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

위와 같이 수학적으로 접근할 수 있다. int 형에서 int 형을 나누면 int 형으로만 반환된다는 것을 알면 쉽게 이해할 수 있다. 즉, 1/3은 0.333이 아닌 0이 된다.

 

 

11382. 꼬마 정민이는 이제 A + B 정도는 쉽게 계산할 수 있다. 이제 A + B + C를 계산할 차례이다! 

첫 번째 줄에 A, B, C (1 ≤ A, B, C ≤ 1012)이 공백을 사이에 두고 주어진다.

#include <iostream>
using namespace std;
int main() {
    long long int a, b, c;
    cin >> a >> b >> c;
    cout << a + b + c;
    return 0;
}

int : -2,147,483,648 ~ 2,147,483,647 (약 21억, 2*10^9)

long long, long long int : -9,223,372,036,854,775,808~9,223,372,036,854,775,807 (약 922경, 9*10^18)

char 
signed char
1바이트, 8비트 -128~127  
unsigned char 1바이트, 8비트 0~255  
short 
short int
2바이트, 16비트 -32,768~32,767 int 생략 가능
unsigned short 
unsigned short int
2바이트, 16비트 0~65,535 int 생략 가능
int
signed int
4바이트, 32비트 -2,147,483,648~ 2,147,483,647  
unsigned 
unsigned int
4바이트, 32비트 0~4,294,967,295 int 생략 가능
long
long int
signed long
signed long int
4바이트, 32비트 -2,147,483,648~ 2,147,483,647 int 생략 가능
unsigned long 
unsigned long int
4바이트, 32비트 0~4,294,967,295 int 생략 가능
long long 
long long int 
signed long long 
signed long long int
8바이트, 64비트 -9,223,372,036,854,775,808~
9,223,372,036,854,775,807
int 생략 가능
unsigned long long 
unsigned long long int
8바이트, 64비트 0~18,446,744,073,709,551,615 int 생략 가능

 

 

10171. 아래 예제와 같이 고양이를 출력하시오.

#include <iostream>
using namespace std;
int main() {
    cout << "\\    /\\" << endl
        << " )  ( ')" << endl
        << "(  /  )" << endl
        << " \\(__)|" << endl;
    return 0;
}

백슬래시(\)를 출력하기 위해서는 \\로 작성해야 한다. 

 

 

10172. 아래 예제와 같이 개를 출력하시오.

#include <iostream>
using namespace std;
int main() {
    cout << "|\\_/|" << endl
        << "|q p|   /}" << endl
        << "( 0 )\"\"\"\\" << endl
        << "|\"^\"`    |" << endl
        << "||_/=\\\\__|" << endl;
    return 0;
}

따옴표(")를 출력하기 위해서는 \"로 작성해야 한다. 혹은 작은 따옴표로 묶으면 된다.

 

'C++ > BAEKJOON (C++)' 카테고리의 다른 글

백준 단계 6 : 심화 1 (C++)  (0) 2023.09.03
백준 단계 5 : 문자열 (C++)  (0) 2023.08.31
백준 단계 4 : 1차원 배열 (C++)  (0) 2023.08.18
백준 단계 3 : 반복문 (C++)  (0) 2023.08.16
백준 단계 2 : 조건문 (C++)  (0) 2023.08.14