![thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F2FaWJ%2FbtqEo7NHZV9%2FNAg2rofhkCkt288SCovx80%2Fimg.png)
[C++] 숫자 퍼즐 게임
2020. 5. 25. 21:48
프로젝트/게임 로직 구현
0부터 24까지 겹치지 않게 무작위로 섞어서 출력한다. 단, 0은 언제나 맨 오른쪽 최하단에 위치해야 한다. 사용자로부터 방향키를 입력받음과 동시에 0을 해당 방향으로 한 칸 이동시킨다. 예를 들어 왼쪽(←) 버튼을 누른 경우, 0의 왼쪽에 있는 22와 자리를 바꾼다. 0이 가장자리에 위치하는 경우, 예를 들어, 0이 상단 사진의 21번 자리에 있다면, 왼쪽(←) 버튼과 아래쪽(↓) 버튼을 눌렀을 때 아무런 위치 변화가 일어나서는 안 된다. https://www.youtube.com/watch?v=e8aU3ExfA2Q&feature=youtu.be ※ 공부 중에 만들어 본 코드입니다. 코드가 매끄럽지 않으며, 검색하지 않고 최대한 알고 있는 내용으로만 구현했으니 참고용으로만 봐 주세요! #include ..
![thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoybWB%2FbtqEu53sYkL%2FpP1AS4l0imbSYGllQiTkq0%2Fimg.png)
[알고리즘 문제] 04. 나이 차이
2020. 5. 22. 22:55
문제 풀이/알고리즘 문제풀이
#include using namespace std; int main() { // 초기화 시: max=-2147000000, min=2147000000 // 나이의 범위가 주어지지 않았기 때문에 이렇게 처리하는 것이 훨씬 좋을 것 같다!! //freopen("input.txt", "rt", stdin); int n, i, age, max=2, min=100; cin >> n; for (i = 0; i > age; if (age > max) max = age; if (age < min) min = age; } cout
![thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcagNda%2FbtqEvg4Kf5w%2F4Ojm1saqXkRHmJkiDNciyk%2Fimg.png)
[알고리즘 문제] 03. 진약수의 합
2020. 5. 21. 20:26
문제 풀이/알고리즘 문제풀이
코드 #include using namespace std; int main() { int n, i, sum = 1; cin >> n; cout
![thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdlN9y2%2FbtqEimEvIN0%2Fe8Posv4dTyUveIwX5qfXgk%2Fimg.png)
[C++] 트럼프 카드 배팅 게임
2020. 5. 20. 22:16
프로젝트/게임 로직 구현
트럼프 카드 모양(♠/◆/♥/♣)을 가진 52개의 카드를 생성하고, 무작위로 섞는다. 카드 모양은 열거형, 각 카드는 구조체를 이용하였다. 섞은 카드 배열에서 카드 두 개(♣a, ♣b)를 차례로 꺼낸다. 이를 확인하고 플레이어는 배팅한다. 이때, 소지금을 넘는 금액을 입력하거나, 최소 배팅 금액(천 원) 미만을 입력했을 경우 정상적인 값이 들어올 때까지 재시도를 요구한다. 다음번에 나온 카드의 숫자가 두 카드의 숫자(a~b) 사이라면 배팅금을 두 배로 돌려받고, 그렇지 않을 경우에는 돌려받지 못한다. 이를 소지금이 없어지거나, 카드(52개)가 모두 소진될 때까지 반복한다. youtu.be/-e-lf0-ZeuY ※ 공부 중에 만들어 본 코드입니다. 코드가 매끄럽지 않으며, 검색하지 않고 최대한 알고 있는 ..
![thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDC6D8%2FbtqEgioFVzu%2Fun0FC9HiGxg79dK08Y2t5k%2Fimg.png)
[C++] C++로 구현하는 빙고 (vs 컴퓨터) ver.2
2020. 5. 19. 22:50
프로젝트/게임 로직 구현
이전 버전과 규칙은 동일하다. 이전 버전: https://c1oud9.tistory.com/97 [C++] C++로 구현하는 빙고 (vs 컴퓨터) 이중 배열의 각 칸에 순차적으로 숫자를 넣는다. (1~25) 셔플 알고리즘을 통해 숫자를 무작위로 섞는다. 사용자에게 숫자를 입력받는다. 사용자에게 입력받은 숫자를 처리한다. 사용자 및 컴퓨터� c1oud9.tistory.com youtu.be/bjkK66xrGS0 개선점 두 숫자가 동시에 처리되지 않고, 플레이어의 입력 후 컴퓨터가 고를 수 있도록 턴제로 진행되게끔 수정했다. 이때, 컴퓨터가 숫자를 지울 때 2초라는 시간을 지연시켰다. 턴이 지날 때마다 화면을 지우며 자연스럽게 갱신하는 기능을 추가했다. 버그를 수정하였다. ※ 공부 중에 만들어 본 코드입니다..
![thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpIPre%2FbtqEimwHHpa%2FqL7parJSpZOrl6KHkInwd0%2Fimg.png)
[C++] C++로 구현하는 빙고 (vs 컴퓨터)
2020. 5. 18. 22:00
프로젝트/게임 로직 구현
이중 배열의 각 칸에 순차적으로 숫자를 넣는다. (1~25) 셔플 알고리즘을 통해 숫자를 무작위로 섞는다. 사용자에게 숫자를 입력받는다. 사용자에게 입력받은 숫자를 처리한다. 사용자 및 컴퓨터의 배열 모두 해당 숫자가 있는 칸의 값을 -1로 만든다. 컴퓨터의 숫자를 결정한다. 본인에게 유리한 숫자를 랜덤으로 출력한다. 이때, 우선 순위는 가로(─), 세로(│), 대각선(\,/) 순이다. 결정된 컴퓨터 숫자를 처리한다. 사용자 및 컴퓨터의 배열 모두 해당 숫자가 있는 칸의 값을 -1로 만든다. 빙고 5줄이 되면 게임을 종료한다. 빙고 줄을 비교하여 승자를 가린다. 단, 동점일 경우 플레이어가 승리한다. youtu.be/DSG1LpYXd7I ※ 공부 중에 만들어 본 코드입니다. 코드가 매끄럽지 않으며, 검색..
![thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fq4dqx%2FbtqEh7T2pKi%2F2dTpAFGPVykr9VoR3AS7J1%2Fimg.png)
[C++] 포인터를 이용하여 for문 별 찍기
2020. 5. 17. 18:08
C++/공부
코드 #include using namespace std; int main() { const char* star= "*****"; const char* space= " "; for (int i = 0; i < 5; i++) { cout
![thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fba3ORR%2FbtqEgQ6CAlG%2FdcjdRjr7Lxsf4ahj5HnS3k%2Fimg.png)
[C++] 셔플(Shuffle) 알고리즘
2020. 5. 16. 21:19
C++/공부
코드 #include #include using namespace std; int main() { srand(time(NULL)); int number[10]; int dest, sour, temp; for (int i = 0; i < 10; i++) number[i] = i + 1; // 셔플 알고리즘 // i의 조건은 섞고 싶은 만큼 지정하기 for (int i = 0; i < 77; i++) { dest = rand() % 10; sour = rand() % 10; temp = number[dest]; number[dest] = number[sour]; number[sour] = temp; } for (int i = 0; i < 10; i++) cout
![thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fy4jrP%2FbtqEvhoGpS3%2F89n3lVqZjuRNKs4hXhjnw1%2Fimg.png)
[알고리즘 문제] 02. 자연수의 합
2020. 5. 15. 21:48
문제 풀이/알고리즘 문제풀이
코드 #include using namespace std; int main() { int a, b; int sum = 0; cin >> a >> b; for (int i = a; i
![thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FwnvLi%2FbtqEuyY0iZc%2FtwKskqrTR705xUHv9Uwqn1%2Fimg.png)
[알고리즘 문제] 01. 1부터 N까지 M의 배수합
2020. 5. 14. 18:56
문제 풀이/알고리즘 문제풀이
코드 #include using namespace std; int main() { int n, m; int sum = 0; cin >> n >> m; for (int i = 1; i
![thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FTdzK2%2FbtqEUpng0gh%2FpQ5yffgjzf5Yjk2C8pjONK%2Fimg.png)
[C++] 따라하며 배우는 C++ - (14) 예외 처리
2020. 5. 5. 19:23
C++/따라하며 배우는 C++
예외처리의 기본 #include #include #include using namespace std; int findFirstChar(const char * string, char ch) { for (std::size_t index = 0; index < strlen(string); ++index) if (string[index] == ch) return index; return -1;// no match } // 리턴값을 bool로 처리할 수도 있음 double divide(int x, int y, bool &success) { if (y == 0) { success = false; return 0.0; } success = false; return static_cast(x) / y; } int mai..
![thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcWB16t%2FbtqEIUsZqw7%2FaKDFgtWGL9p1xQ2dksq6nK%2Fimg.png)
[C++] 따라하며 배우는 C++ - (13) 템플릿
2020. 5. 4. 13:59
C++/따라하며 배우는 C++
함수 템플릿 프로그래머의 단순 반복 작업을 줄여 주기 위한 장치가 있다. 템플릿은 여러 가지 자료형에 대해서 비슷한 코드를 반복하는 것을 방지해 준다. Cents.h #pragma once #include class Cents { private: int m_cents; public: Cents(int cents) : m_cents(cents) { } friend bool operator > (const Cents &c1, const Cents &c2) { return (c1.m_cents > c2.m_cents); } friend std::ostream& operator
![thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FU09aG%2FbtqEvYYBR48%2Fz5nrwD4mto3s8ccbJADCBK%2Fimg.png)
[C++] 따라하며 배우는 C++ - (12) 가상 함수들
2020. 5. 3. 20:28
C++/따라하며 배우는 C++
다형성의 기본 개념 자식 클래스 객체에 부모 클래스 포인터를 사용한다면? #include #include using namespace std; class Animal { protected: string m_name; public: Animal(std::string name) : m_name(name) {} public: string getName() { return m_name; } //void speak() const virtual void speak() const { cout
![thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FczZr6G%2FbtqEqr7DChk%2Fi4eohlIpOItXnnJKwY7Okk%2Fimg.png)
[C++] 따라하며 배우는 C++ - (11) 상속
2020. 5. 2. 19:14
C++/따라하며 배우는 C++
상속의 기본 (1) Inheritance(is-a relationship) #include using namespace std; class Mother// generalized class { private:// 자식한테도 허용X //public:// 다 열어 버림 //protected:// private 상태를 유지하면서 자식에게는 허용 int m_i; public: Mother(const int & i_in) : m_i(i_in) { std::cout
![thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdn5qwO%2FbtqElXySddw%2FcxYieQaPljL9kXBKy0mukK%2Fimg.png)
[C++] 따라하며 배우는 C++ - (10) 객체들 사이의 관계에 대해
2020. 4. 30. 01:36
C++/따라하며 배우는 C++
객체들의 관계 1. 프로그램이 수행해야 하는 기능 정하기 2. 어떤 객체들이 어떻게 나눠서 도움을 주고받을지 설계 3. 설계에 따라서 여러 클래스를 구현 구성(요소) 관계 Composition Part-of 두뇌는 육체의 일부이다. 육체 없이는 존재할 수 없으며, 두뇌가 육체 전체에 대해 알고 있지는 않다. 전체/부품 - 육체/두뇌 다른 클래스에도 속할 수 없음 - 두뇌는 다른 클래스에 속할 수 없음 멤버의 존재를 클래스가 관리함 - 두뇌를 육체가 관리함 단방향 Position2D.h #pragma once #include class Position2D { private: int m_x; int m_y; public: Position2D(const int & x_in, const int & y_in) :..
![thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc6g87X%2FbtqEeZIeBCb%2FZHZNLHo295aTXfqkiyJxXk%2Fimg.png)
[백준/C++] 1110번: 더하기 사이클
2020. 4. 29. 15:20
문제 풀이/백준
문제 0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음, 주어진 수의 가장 오른쪽 자리 수와 앞에서 구한 합의 가장 오른쪽 자리 수를 이어 붙이면 새로운 수를 만들 수 있다. 다음 예를 보자. 26부터 시작한다. 2+6 = 8이다. 새로운 수는 68이다. 6+8 = 14이다. 새로운 수는 84이다. 8+4 = 12이다. 새로운 수는 42이다. 4+2 = 6이다. 새로운 수는 26이다. 위의 예는 4번만에 원래 수로 돌아올 수 있다. 따라서 26의 사이클의 길이는 4이다. N이 주어졌을 때, N의 사이클의 길이를 구하는 프로그램을 작성하시오. 입력 첫째 ..
[C++] cin.eof()와 EOF(End of file)
2020. 4. 28. 22:56
C++/공부
EOF EOF(End of File): 파일의 끝, 더 이상 읽을 데이터가 없다 cin으로 입력을 받으려고 할 때, EOF라면 입력이 취소되고 cin.eof()는 true를 반환한다. 이를 이용하여 파일이 종료될 때까지 입력을 받는 코드를 작성할 수 있다. 터미널(콘솔)에서는 EOF를 수동으로 넣어 주어야 한다. Windows: Ctrl+z / Unix: Ctrl+d 코드 #include int main() { using namespace std; int a, b; while(true) { cin >> a >> b; if (cin.eof()) break; cout
![thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FofEIG%2FbtqEj80kL4X%2F6qCJlkJ1jlLTRXSKYUG1p1%2Fimg.png)
[C++] 따라하며 배우는 C++ - (9) 연산자 오버로딩
2020. 4. 27. 21:44
C++/따라하며 배우는 C++
산술 연산자 오버로딩 하기 #include using namespace std; // 사용자 정의 자료형에서도 산술 연산자 정의 가능 class Cents { private: int m_cents; public: Cents(int cents = 0) { m_cents = cents; } int getCents() const { return m_cents; } int& getCents() { return m_cents; } //friend Cents operator + (const Cents &c1, const Cents &c2) //{ //return Cents(c1.getCents() + c2.getCents()); //} // friend 없애고 멤버 함수로 사용하려면... this 사용 // 멤버 ..