
[알고리즘 문제] 10. 자릿수의 합
2020. 6. 3. 21:16
문제 풀이/알고리즘 문제풀이
#include using namespace std; int digit_sum(int x) { int sum = 0; for (int i = 1; i > n; for (i = 0; i > a[i]; for (i = 0; i max || (t == max && a[i] > max_n)) { max = t; max_n = a[i]; } } cout > n; for (i = 0; i > num; sum = digit_sum(num); if (sum > max) { max = sum; res = num; } else if (sum == max) res = num > res ?..

[알고리즘 문제] 09. 모두의 약수
2020. 6. 2. 21:39
문제 풀이/알고리즘 문제풀이
#include using namespace std; int main() { int num, i, j; cin >> num; for (i = 1; i

[알고리즘 문제] 08. 올바른 괄호
2020. 6. 1. 20:45
문제 풀이/알고리즘 문제풀이
#include using namespace std; bool check(char * c) { int count = 0; for (int i = 0; c[i] != '\0'; ++i) { if (c[0] == ')' || (c[i+1] == '\0' && c[i] == '(')) return false; if (c[i] == '(') count++; else if (c[i] == ')') count--; } if (count == 0) return true; return false; } int main() { char c[31]; cin >> c; cout
[WinAPI] 2D 게임 제작 (1) 기본 윈도우 창 - 1
2020. 5. 31. 18:27
WinAPI
각 플랫폼(Windows, Mac, Android 등)마다 맞는 함수들을 제공해 준다. => API(Application Programming Interface) winAPI란 Windows를 이용하기 위한 무수히 많은 함수의 집합이다. windows.h: 윈도우 창에서 무언가를 출력하는 등 윈도우 창을 컨트롤할 수 있는 함수들을 제공 wWinMain: win32의 진입점 함수(메인 함수) int APIENTRY wWinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPWSTR lpCmdLine, _In_ int nCmdShow) { //... } APIENTRY: __stdcall(함수 호출 규약) HINSTANCE: H -..

[알고리즘 문제] 07. 영어단어 복구
2020. 5. 30. 21:39
문제 풀이/알고리즘 문제풀이
#include #include using namespace std; int main() { int i; char c[101]; gets_s(c); for (i = 0; c[i] != '\0'; i++) { if (c[i] == ' ') continue; if (c[i] >= 65 && c[i]

[알고리즘 문제] 06. 숫자만 추출
2020. 5. 29. 16:07
문제 풀이/알고리즘 문제풀이
#include #include using namespace std; int main() { char c[51]; int i, idx = 0, num = 0, cnt = 0; int n[8]{ 0 }; cin >> c; for (i = 0; i = 48 && c[i]
[TIL] 2020-05-28
2020. 5. 28. 21:10
TIL(Today I Learned)
1. 마우스 입력받기 POINT _ptMouse; LRESULT CALLBACK WndProc(HWND hWnd, UINT iMessage, WPARAM wParam, LPARAM lParam) { PAINTSTRUCT ps; HDChdc;//Device Context switch (iMessage) { case WM_CREATE: { } break; // 마우스를 움직일 때 case WM_MOUSEMOVE: { // 마우스의 좌표를 받아서 POINT에 저장 _ptMouse.x = LOWORD(lParam); _ptMouse.y = HIWORD(lParam); InvalidateRect(hWnd, NULL, true); } break; // 마우스 왼쪽을 누를 때 case WM_LBUTTONDOWN: {..

[TIL] 2020-05-27
2020. 5. 27. 22:45
TIL(Today I Learned)
1. winAPI 기초 #include //API : Application Programming Interface HINSTANCE _hInstance; HWND _hWnd; LPCTSTR _lpszClass = TEXT("21"); //함수 프로토타입 선언 LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); /* HINSTANCE hInstance: 프로세스의 시작 주소, 시작 주소를 알 수 있으므로 프로그램 내 자원을 사용할 때 사용함 HINSTANCE hPrevInstance: 이전에 실행되었던 프로그램의 주소 LPSTR lpszCmdParam: 프로그램 시작 시 실행 파일 뒤에 적힌 값을 넘겨 받을 수 있음, 실행과 동시에 값을 빠르게 넣을 수 있음 i..

[C++] 전방 선언에 관하여
2020. 5. 26. 22:43
C++/공부
전방 선언: 선 실행 후 연결 전방 선언은 불필요한 헤더 파일이 복잡하게 포함되는 것을 방지하여, 결과적으로는 컴파일 속도를 향상시킵니다. 객체 수가 많다는 가정하에 빌드 속도 차이가 확연하게 납니다. 예제와 함께 알아보기 예를 들어 클래스 A를 지갑, 클래스 B를 통장이라고 했을 때, 클래스 AB는 지갑과 통장에 모두 접근할 수 있는 클래스입니다. 따라서 지갑에 있는 돈을 꺼내어 사용하기도 하고, 통장에 있는 돈을 꺼내서 지갑에 넣기도(또는 그 반대) 하겠죠? 아무런 기능도 하지 않는 클래스들을 만들어, 예시와 함께 보겠습니다. AB.h #pragma once #include "A.h" #include "B.h" class AB { }; A.h #pragma once class A { }; B.h #p..

[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 ..

[알고리즘 문제] 05. 나이 계산
2020. 5. 24. 22:34
문제 풀이/알고리즘 문제풀이
#include using namespace std; int main() { int a, b, year, gender, result; scanf_s("%d-%d", &a, &b); year = a / 10000; gender = b / 1000000; char c = gender % 2 == 0 ? 'W' : 'M'; result = 20 - year + (gender < 3 ? 100 : 0); cout
객체지향 언어의 5대 원칙
2020. 5. 23. 22:46
기타 프로그래밍
객체지향이란? 객체지향 프로그래밍이란, 현실에 존재하는 사물과 대상(객체), 그리고 그들 간의 상호작용을 있는 그대로 실체화시키는 형태의 프로그래밍이다. 기존의 프로그래밍 언어들과 동떨어진 것이 아닌, 몇 가지 규칙을 추가하여 발전된 형태의 언어이다. 높은 코드의 재사용성 코드 관리 용이 신뢰성이 높은 프로그래밍 원칙: SOLID 단일 책임의 원칙(SRP) Single Responsibility Principle 모든 클래스는 단 하나의 책임을 가진다. 여기서 '책임'이란, 클래스를 변경해야 할 하나 이상의 이유라고 볼 수 있다. 따라서 클래스를 수정할 이유가 오직 하나여야 한다. 클래스가 하나 이상의 책임을 가지게 된다면, 그 책임들이 서로 관계를 맺게 된다. 책임 변경 시, 다른 하나의 책임 때문에 ..

[알고리즘 문제] 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

[알고리즘 문제] 03. 진약수의 합
2020. 5. 21. 20:26
문제 풀이/알고리즘 문제풀이
코드 #include using namespace std; int main() { int n, i, sum = 1; cin >> n; cout

[C++] 트럼프 카드 배팅 게임
2020. 5. 20. 22:16
프로젝트/게임 로직 구현
트럼프 카드 모양(♠/◆/♥/♣)을 가진 52개의 카드를 생성하고, 무작위로 섞는다. 카드 모양은 열거형, 각 카드는 구조체를 이용하였다. 섞은 카드 배열에서 카드 두 개(♣a, ♣b)를 차례로 꺼낸다. 이를 확인하고 플레이어는 배팅한다. 이때, 소지금을 넘는 금액을 입력하거나, 최소 배팅 금액(천 원) 미만을 입력했을 경우 정상적인 값이 들어올 때까지 재시도를 요구한다. 다음번에 나온 카드의 숫자가 두 카드의 숫자(a~b) 사이라면 배팅금을 두 배로 돌려받고, 그렇지 않을 경우에는 돌려받지 못한다. 이를 소지금이 없어지거나, 카드(52개)가 모두 소진될 때까지 반복한다. youtu.be/-e-lf0-ZeuY ※ 공부 중에 만들어 본 코드입니다. 코드가 매끄럽지 않으며, 검색하지 않고 최대한 알고 있는 ..

[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초라는 시간을 지연시켰다. 턴이 지날 때마다 화면을 지우며 자연스럽게 갱신하는 기능을 추가했다. 버그를 수정하였다. ※ 공부 중에 만들어 본 코드입니다..

[C++] C++로 구현하는 빙고 (vs 컴퓨터)
2020. 5. 18. 22:00
프로젝트/게임 로직 구현
이중 배열의 각 칸에 순차적으로 숫자를 넣는다. (1~25) 셔플 알고리즘을 통해 숫자를 무작위로 섞는다. 사용자에게 숫자를 입력받는다. 사용자에게 입력받은 숫자를 처리한다. 사용자 및 컴퓨터의 배열 모두 해당 숫자가 있는 칸의 값을 -1로 만든다. 컴퓨터의 숫자를 결정한다. 본인에게 유리한 숫자를 랜덤으로 출력한다. 이때, 우선 순위는 가로(─), 세로(│), 대각선(\,/) 순이다. 결정된 컴퓨터 숫자를 처리한다. 사용자 및 컴퓨터의 배열 모두 해당 숫자가 있는 칸의 값을 -1로 만든다. 빙고 5줄이 되면 게임을 종료한다. 빙고 줄을 비교하여 승자를 가린다. 단, 동점일 경우 플레이어가 승리한다. youtu.be/DSG1LpYXd7I ※ 공부 중에 만들어 본 코드입니다. 코드가 매끄럽지 않으며, 검색..

[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