no image
[C++] 백준 10430번 - 나머지
여러 복잡해 보이는 사칙연산을 사용해 푸는 문제이다. 복잡해보이지만, 자세히 보면 아주 간단한 문제이다. 1. 첫째 줄에서 a, b, c 입력받기 2. 입력받은 값을 이용한 사칙연산으로 출력하기 #include int main(){ using namespace std; int a, b, c; cin >> a >> b >> c; cout
2022.11.21
no image
[C++] 백준 3003번 - 킹, 퀸, 룩, 비숍, 나이트, 폰
동혁이가 흰 색 피스를 찾았는데 검정색 피스보다 수가 부족하다. 몇 개를 더 찾아야 정상 피스의 수와 같아지는지 구하는 문제이다. 정상 피스의 수는 다음과 같다. king 1개, queen 1개, rook 2개, bishop 2개, night 2개, pawn 8개 1. 발견된 흰색 피스의 갯수 입력받기(king, queen, rook, bishop, night, pawn의 순으로) 2. 정상 피스의 수 - 찾은 피스의 수 #include //1. k=1, q=1, r=2, b=2, n=2, p=8 //2. 원래 피스의 수 - find int main(){ using namespace std; int king = 1; int queen = 1; int rook = 2; int bishop = 2; int ..
2022.11.21
no image
[C++] 백준 18108번 - 1998년인생인 내가 태국에서는 2541년생?!
불기와 서기 연도를 변환하는 문제이다. 1. 서기를 알아보고 싶은 불기를 입력(string) 2. 서기와 불기의 차는 543년 3. 입력된 불기 - 543 = 서기 #include int main(){ using namespace std; int year; cin >> year; cout
2022.11.21
no image
[C++] 백준 10926번 - ??!
준하가 놀란 것을 표현하는 문제다..ㅎㅎ 1. string으로 id를 입력 받는다. 2. 입력받은 id에 "??!"을 붙여 출력한다. 코드는 다음과 같다. #include #include int main(){ using namespace std; string id; cin >> id; id += "??!"; cout
2022.11.21
no image
[C++] 백준 10869번 - 사칙연산
단순 사칙연산을 하는 문제이다. C++ 기초 공부를 따로 하지 않고 알고리즘을 풀면서 공부해나갈 예정이다. 1. 첫째 줄에서 연산을 수행할 두 값을 받는다. 2. 저장한 두 값으로 사칙연산을 수행한다. 코드는 다음과 같다. #include using namespace std; int main(int argc, char const *argv[]){ int a, b; cin >> a >> b; cout
2022.11.21
[ C++ ] Hello World 출력해보기
전공자 버프로 C++로 짜여진 코드를 보고 해석은 할 수 있는 수준이지만 직접 코드를 작성하기엔 어려움을 느끼는 수준이다. 오늘부터 차근차근 C++ 언어를 공부할 예정이다. #include int main() { std::cout
2022.11.15
[Python] 백준 단계별로 풀어보기 1000번
1000번 문제 1. 한 줄에 2개의 입력값 받아오기 2. 입력 받은 두 값을 더해서 출력 - python A, B = int(input()).Split() print(A + B)
2022.11.15

여러 복잡해 보이는 사칙연산을 사용해 푸는 문제이다.

복잡해보이지만, 자세히 보면 아주 간단한 문제이다. 

 

1. 첫째 줄에서 a, b, c 입력받기

2. 입력받은 값을 이용한 사칙연산으로 출력하기

 

#include <iostream>

int main(){
    using namespace std;
    
    int a, b, c;
    
    cin >> a >> b >> c;
    
    cout << (a + b) % c << "\n";
    cout << ((a % c) + (b % c)) % c << "\n";
    cout << (a * b) % c << "\n";
    cout << ((a % c) * (b % c)) % c << "\n";
    
    
    return 0;
}

생각보다 엄청 간단한 문제이다!

endl을 쓰지 않고 "\n"을 사용한 이유는 메모리 효율 문제 때문인데, 다음에 포스팅하도록 하겠다.

동혁이가 흰 색 피스를 찾았는데 검정색 피스보다 수가 부족하다.

몇 개를 더 찾아야 정상 피스의 수와 같아지는지 구하는 문제이다.

 

정상 피스의 수는 다음과 같다.

king 1개, queen 1개, rook 2개, bishop 2개, night 2개, pawn 8개

1. 발견된 흰색 피스의 갯수 입력받기(king, queen, rook, bishop, night, pawn의 순으로)

2. 정상 피스의 수 - 찾은 피스의 수

#include <iostream>
//1. k=1, q=1, r=2, b=2, n=2, p=8
//2. 원래 피스의 수 - find
int main(){
    using namespace std;
    int king = 1;
    int queen = 1;
    int rook = 2;
    int bishop = 2;
    int night = 2;
    int pawn = 8;
    
    int f_king, f_queen, f_rook, f_bishop, f_night, f_pawn;
    
    cin >> f_king;
    cin >> f_queen;
    cin >> f_rook;
    cin >> f_bishop;
    cin >> f_night;
    cin >> f_pawn;
    
    cout << king - f_king << " ";
    cout << queen - f_queen << " ";
    cout << rook - f_rook << " ";
    cout << bishop - f_bishop << " ";
    cout << night - f_night << " ";
    cout << pawn - f_pawn << " ";
    
    return 0;
}

참고로 출력할 때 한 줄로 출력하고 공백으로 구분되기 때문에 cout으로 출력한 뒤 꼭!! " "을 넣어줘야한다.

어려운 문제는 아니었지만, 변수 뒤에 공백처리를 안해서 한참동안 이해를 못했었다..

불기와 서기 연도를 변환하는 문제이다.

 

1. 서기를 알아보고 싶은 불기를 입력(string)

2. 서기와 불기의 차는 543년

3. 입력된 불기 - 543 = 서기

 

#include <iostream>

int main(){
    using namespace std;
    
    int year;
    
    cin >> year;
    
    cout << year - 543;
    
    return 0;
}

원리만 잘 생각하면 간단하게 풀 수 있는 문제였다!

준하가 놀란 것을 표현하는 문제다..ㅎㅎ

1. string으로 id를 입력 받는다.

2. 입력받은 id에 "??!"을 붙여 출력한다.

 

코드는 다음과 같다.

#include <iostream>
#include <string>

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

c++에 삼중자라는 것이 있는데 외우기 귀찮기도 하고.. 외워도 언젠가 잊어버릴 것이 분명하기 때문에.. 삼중자를 신경쓰지 않고 코드를 작성할 수 있는 string 클래스로 작성하였다..

 

그래도 삼중자가 궁금하니 삼중자 시퀀스를 알아보자.

삼중자 문자(치환되는 문자)
??= #
??/ \
??' ^
??( [
??) ]
??! |
??< {
??> }
??- ~

3개 문자를 조합해서 특정 문자로 치환되는 것이다.

왜?

일부 언어권 문자 중에서 C언어의 표준 문제셋을 모두 받아들이지 못해 C언어에서 사용하는 표현식을 쓰지 못하는 경우가 발생해 삼중자 시퀀스를 만들었다고 한다.

삼중자를 출력할 때 출력하고 싶다면??

물음표 사이어 역슬래쉬(\)를 끼워주면 된다.

?\?! 이런 느낌으로 ..

단순 사칙연산을 하는 문제이다. C++ 기초 공부를 따로 하지 않고 알고리즘을 풀면서 공부해나갈 예정이다.

 

1. 첫째 줄에서 연산을 수행할 두 값을 받는다.

2. 저장한 두 값으로 사칙연산을 수행한다.

 

코드는 다음과 같다.

#include <iostream>

using namespace std;

int main(int argc, char const *argv[]){
    int a, b;
    
    cin >> a >> b;
    
    cout << a+b << "\n";
    cout << a-b << "\n";
    cout << a*b << "\n";
    cout << a/b << "\n";
    cout << a%b << "\n";
    
    return 0;
}

한 줄에 두 번의 입력을 받는 과정은 파이썬과 C#을 선택했을 때 split() 함수를 사용했었는데 C++은 간편하게 할 수 있어서 좋은 것 같다..

전공자 버프로 C++로 짜여진 코드를 보고 해석은 할 수 있는 수준이지만 직접 코드를 작성하기엔 어려움을 느끼는 수준이다.

오늘부터 차근차근 C++ 언어를 공부할 예정이다.

#include <iostream>
int main()
{
    std::cout<<"HELLO ~"<<std::end;
    
    return 0;
}

Python, C# 등의 언어와 많이...많이.. 다르다...

#include <iostream>
using namespace std;   // 출력할 때 std:: 안붙어도 됨

int main()
{
    /* 주석 */
    // 주석
    
    //std::cout<<"HELLO ~"<<std::end;

    cout<<"Hello c++ !"<<endl;
    cout<<"C++은 C#과 굉장히 다르다..";
    
    return 0;
}

이렇게 using namespace std를 써주면 출력할 때 std::를 귀찮게 안써줘도 된다.

'<<' 이것은 우측의 내용을 왼쪽의 객체로 보낸다고 생각하면 쉬운데, "Hello c++"이라는 문자열을 cout 객체로 보내 출력한다고 생각하면 된다.

 

endl 객체는 End Line 이라는 뜻으로 말 그대로 줄 바꿈하는 객체이다.

주석은 C#과 동일하게 여러 블록을 주석처리하고 싶다면 /* */를 사용하면 되고, 한 줄만 주석처리하고 싶다면 //을 사용하면 된다.

1000번 문제

1. 한 줄에 2개의 입력값 받아오기

2. 입력 받은 두 값을 더해서 출력

- python

A, B = int(input()).Split()

print(A + B)