동동 개발

[C++] 백준 단계별로 풀기 1단계 : 입출력과 사칙연산 (총 13문제) 본문

C++ 공부

[C++] 백준 단계별로 풀기 1단계 : 입출력과 사칙연산 (총 13문제)

양동선 2026. 2. 16. 15:44

게임 개발을 하려면 C++에 대한 이해가 필수이지요...

C언어의 기초적인 문법 + 프로그래밍 알고리즘은 어느정도 알고 있으니 C++ 책과 공부를 병행하면서 백준 단계별 풀기로 공부해볼까 한다.

차차 공부하면서 문법이나 자료구조를 정리합시다.

레츠 기니~~!!!

 

✏️ 2557번 : Hello World

#include <iostream>

int main(){
    std::cout << "Hello" << std::endl << "World!";
}

 

✏️ 1000번 : A+B

#include <iostream>
using namespace std;

int main(){
    int a, b;
    
    cin >> a >> b;
    cout << a+b << endl;
    return 0;
}

cin과 cout을 사용하여 입출력을 다루는 간단한 문제들이다.

 

✏️ 1001번 : A-B

#include <iostream>
using namespace std;

int main(){
    int a, b;
    
    cin >> a >> b;
    cout << a-b << endl;
    return 0;
}

 

 

✏️ 10998번 : A*B

#include <iostream>
using namespace std;

int a, b;

int main(){
    
    cin >> a >> b;
    
    cout << a*b << endl;
    
    return 0;
}

 

 

✏️ 1008번 : A/B

#include <iostream>
using namespace std;

int main(){
    double a,b;
    cin >> a >> b;
    cout.precision(10);
    cout << (double)a/b << endl;
    return 0;
}

 

int/Int는 정수형 나눗셈이므로 결과값이 정수(소숫점 아래 날라감)가 나온다.

따라서 int/double 혹은 double/double로 나눗셈을 해서 결과값이 소수가 나오게 해주자.

이때, 소숫점 출력 자릿수를 조절해주는 함수 cout.precision()를 사용한다.

 

std의 setprecision()도 있다!

 

✏️ 10869번 : 사칙연산

#include <iostream>
using namespace std;

int main()
{
    int a,b;
    cin >> a >> b;
    
    cout << (a+b) <<endl;
    cout << (a-b) <<endl;
    cout << (a*b) <<endl;
    cout << (a/b) <<endl;
    cout << (a%b) <<endl;
    
    return 0;
}

 

 

✏️ 10926번 : ??!

// 1. 간단하게 문자 뒤에 출력
#include <iostream>
#include <string>
using namespace std;

int main()
{
    string name;
    cin >> name;
    cout << name <<"??!"<<endl;
    
    return 0;
}

// 2. string의 append 함수 사용하기
#include <iostream>
#include <string>
using namespace std;

int main()
{
    string name;
    string str = "??!";
    cin >> name;
    
    name.append(str);
    cout << name <<endl;
    
    return 0;
}

 

string.append() 함수라는 게 있어서 써보고 싶어서 이 방법으로도 해봤다.

이 함수를 쓰려면 #include <string> 라이브러리를 당연히 추가해줘야겠죠~

 

 

✏️ 18108번 : 1998년생인 내가 태국에선 2541년생?!

#include <iostream>
using namespace std;

int main()
{
    int buda_year;
    cin >> buda_year;
    cout << buda_year-543 << endl;
    return 0;
}

간단한 계산 문제다.

 

 

✏️ 10430번 : 나머지

#include <iostream>
using namespace std;

int main()
{
    int a, b, c;
    cin >> a >> b >> c;
    cout << (a+b)%c << endl;
    cout << ((a%c)+(b%c))%c << endl;
    cout << (a*b)%c << endl;
    cout << ((a%c)*(b%c))%c << endl;
    
    return 0;
}

 

 

✏️ 2588번 : 곱셈

자릿수 별로 숫자를 뽑아낼 때, 나눗셈 연산자 사용에 유의하자.

#include <iostream>
using namespace std;

int a, b;

int main(){
    
    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;
}

 

'/' 연산자 : 몫
'%' 연산자 : 나머지

임에 유의하자.

 

 

✏️ 11382번 : 꼬마 정민

#include <iostream>
using namespace std;

int main()
{
    long a, b, c;
    cin >> a >> b >> c;
    cout << a+b+c << endl;
    
    return 0;
}

 

 

✏️ 10171번 : 고양이\, ' 등의 문자에 주의하며 고양이를 출력하는 문제)

#include <iostream>
using namespace std;

int main()
{
    cout << "\\    /\\ " << endl;
    cout << " )  ( \')" << endl;
    cout << "(  /  )" << endl;
    cout << " \\(__)|" << endl;
    
    return 0;
}

 

쉬워보이지만 생각 없이 코드를 치면 실패하는 문제다.

이스케이프 시퀀스인 \(=₩)(백슬래쉬)에 주의해야 한다.

컴퓨터를 제어하는 목적으로 사용되는 특수문자이기 때문에, 백슬래쉬를 문자로 인식하려면 백슬래시뒤에 백슬래쉬를 하나 더 붙여주는 방법을 썼다. (\\)

참고: https://beelee.tistory.com/20

 

C++ 기초 명령어 [2.2 데이터의 입력과 출력] [이스케이프 시퀀스]

"C++ 기초 명령어" 챕터에서는 C++ 프로그래밍을 하는데 있어 가장 기초적으로 사용되는 명령어들을 몇가지 알아볼 예정입니다. 아래의 순서대로 챕터가 진행될 예정입니다. 더보기 - [2.1. 변수와

beelee.tistory.com

 

 

✏️ 10172번 : 개  (", `, \ 등의 문자에 주의하며 개를 출력하는 문제)

이전 문제의 \(백슬래시)에 이어, 특수문자 '(작은 따옴표)와 "(큰따옴표)를 문자열로 출력할 때 주의해야하는 문제이다.

이들은 문법적 기능을 하는 특수문자들이기 때문에...

" ' \ 를 문자로 출력할 땐, 앞에 \(백슬래시)를 넣어 이스케이프 시켜주자.

 

더하여, 다른 블로그를 찾아보니 C++에 새로운 기능인 Raw 문자열이 있다고 한다.

str = R"(원하는 문자열 삽입)"

로 스트링 리터럴은 R"(   )" << 이런 모양이고, 괄호 안에 원하는 내용을 넣으면 이스케이프 문자도 전부 문자열로 인식해준다.

줄바꿈도 '\n'을 사용하지 않고, 그냥 엔터키로 넣으면 줄바꿈이 되어 출력된다.

str = R"(엔터키도
그대로 줄바꿈으로인식합니다.)";

 

참고: https://orblangjeee.tistory.com/8

https://todamfather.tistory.com/85 

 

그럼 개 문제도 이렇게 풀면 되겠군! 하고 새로 배운 Raw 문자열을 적용시켜 봤더니..

 

에러가 뜬다.

잘 보니, 내가 출력하는 문자열에 )" 가 있어서 여기서 raw 문자열이 끊긴다고 인식한 것이다. (이것까지 걸러준다고? 문제를 너무 잘 만드셨다...)

그래서 또 찾아봤더니 delimiter(구분자)를 쓰면 된다고 한다. 나만의 기준을 넣어두는 셈이다.

str = R"TAG(    )TAG"

 

구분자를 적용해보면, 

아주 잘 출력이 된다!

 

최종 코드: 

#include <iostream>
#include <string>
using namespace std;

int main()
{
    string str1 =
    R"TAG(|\_/|
|q p|   /}
( 0 )"""\
|"^"`    |
||_/=\\__|)TAG";
    
    cout << str1 << endl;
    
    
    return 0;
}

 

기본적이지만 꼭 알아야하는 것들을 잘 짚고 넘어가는 것 같아서 기분이 좋다.

 

1단계 모두 클리어~~