분류 전체보기
-
게임 프로그래밍 패턴 Part 2 디자인 패턴 다시 보기 - 싱글턴보관함 2020. 3. 1. 14:51
게임 프로그래밍 패턴로버트 나이스트롬 (Robert Nystrom) 상세보기 이 시리즈는 [게임 프로그래밍 패턴]에 등장하는 팁을 정리하고 패턴을 직접 구현하거나 구현되어 있는 패턴을 확인하는 것으로 해당 패턴에 대해 이해하는 것을 목표로 한다. 이번 포스팅에서는 Part 2의 다섯 번째 패턴인 싱글턴을 살펴보고 저자가 주장하는 싱글턴 사용을 피해야 하는 이유에 대해서 자세히 살펴보는 것을 목표로 한다. 싱글턴 패턴이란?) [GoF디자인 패턴]에서는 싱글턴 패턴을 다음과 같이 소개했다. 오직 한 개의 클래스 인스턴스만을 갖도록 보장하고, 이에 대한 전역적인 접근점을 제공합니다. 코드로 살펴보면 다음과 같이 인스턴스 생성이 하나만 되도록 제한하고 전역 변수로 접근하도록 만드는 것이다. class TestC..
-
JUNGOL 실력키우기 여러가지 - 색종이(초) | 색종이(중)보관함 2020. 2. 16. 09:28
기초 다지기에서 배운 내용을 응용하여 문제를 해결해야 하는 실력 키우기입니다. 실력 키우기는 비슷한 문제 유형별로 묶어서 풀어보겠습니다. 이번 포스팅에서는 여러가지의 색종이 시리즈를 풀어보겠습니다. 1438 : 색종이(초) 이 문제는 가장 단순한 것이 정답일 수 있다는 것을 잘 보여주는 듯한 문제인 듯 합니다. 단순하게 100 x 100 크기의 bool형 배열을 만들고 최초로 체크될 때 넓이에 1을 추가하는 방식을 사용하면 입력된 위치를 따로 저장할 필요 없이 쉽게 넓이를 알아낼 수 있습니다. #include using namespace std; bool area[101][101]; int main(void) { int n; cin >> n; int x, y; int totalArea{ 0 }; for ..
-
JUNGOL 실력키우기 문자열 - 암호풀기(Message Decowding)보관함 2020. 2. 10. 10:42
기초 다지기에서 배운 내용을 응용하여 문제를 해결해야 하는 실력 키우기입니다. 실력 키우기는 비슷한 문제 유형별로 묶어서 풀어보겠습니다. 이번 포스팅에서는 문자열의 암호풀기 문제를 풀어보겠습니다. 1880 : 암호풀기(Message Decowding) 이 문제는 입력된 복호화 키를 값으로 하는 맵을 만들어 대치시켜주면 되는 간단한 문제입니다. 그런데 c++의 getline이 안먹어요. 심지어 이번에는 cin의 clear와 ignore 메소드를 넣어도 성공하지 못합니다. #include #include #include using namespace std; int main(void) { string str; cin >> str; map keyMap; char c{ 'a' }; for (int i{ 0 }; c
-
JUNGOL 실력키우기 문자열 - 세로읽기보관함 2020. 2. 10. 10:40
기초 다지기에서 배운 내용을 응용하여 문제를 해결해야 하는 실력 키우기입니다. 실력 키우기는 비슷한 문제 유형별로 묶어서 풀어보겠습니다. 이번 포스팅에서는 문자열의 세로읽기 문제를 풀어보겠습니다. 2857 : 세로읽기 이 문제를 간단하게 생각하면 이차원 배열로 생각할 수 있고 C++에서는 string의 size를 알 수 있으므로 string 배열을 이용하면 쉽게 해결이 가능합니다. #include #include using namespace std; int main(void) { string strArr[5]; int longest{ 0 }; for (int i = 0; i > strArr[i]; if (strArr[i].size() > longest) longest = s..
-
JUNGOL 실력키우기 문자열 - 문자열 찾기 | 단어 세기보관함 2020. 2. 10. 10:37
기초 다지기에서 배운 내용을 응용하여 문제를 해결해야 하는 실력 키우기입니다. 실력 키우기는 비슷한 문제 유형별로 묶어서 풀어보겠습니다. 이번 포스팅에서는 문자열의 단어 찾기 시리즈를 풀어보겠습니다. 2514 : 문자열 찾기 C++의 string 클래스에는 find라는 좋은 메소드가 포함되어 있는데 이 메소드의 오버로드를 살펴보면 문자열의 위치를 찾고 어느 인덱스 부터 찾을지를 결정할 수 있습니다. 이 문제는 이 메소드를 이용하여 쉽게 해결이 가능합니다. #include #include using namespace std; int main(void) { string str; cin >> str; string targets[2]{ "KOI", "IOI" }; for (int i = 0; i < 2; ++i..
-
JUNGOL 실력키우기 문자열 - 그릇보관함 2020. 2. 10. 10:35
기초 다지기에서 배운 내용을 응용하여 문제를 해결해야 하는 실력 키우기입니다. 실력 키우기는 비슷한 문제 유형별로 묶어서 풀어보겠습니다. 이번 포스팅에서는 문자열의 그릇 문제를 풀어보겠습니다. 2604 : 그릇 이 문제를 살펴보면 결국 이전에 들어온 문자와 현재의 문자가 같으면 5만큼 증가하고 다르면 10만큼 증가한다는 것을 알 수 있습니다. 이것을 고려하면 쉽게 해결이 가능합니다. #include #include using namespace std; int main(void) { string str; cin >> str; char pre{ str[0] }; int height{ 10 }; for (int i = 1; i < str.size(); ++i) { if (pre == str[i]) { heig..
-
게임 프로그래밍 패턴 Part 2 디자인 패턴 다시 보기 - 프로토타입보관함 2020. 2. 8. 19:08
게임 프로그래밍 패턴로버트 나이스트롬 (Robert Nystrom) 상세보기 이 시리즈는 [게임 프로그래밍 패턴]에 등장하는 팁을 정리하고 패턴을 직접 구현하거나 구현되어 있는 패턴을 확인하는 것으로 해당 패턴에 대해 이해하는 것을 목표로 한다. 이번 포스팅에서는 Part 2의 네 번째 패턴인 프로토타입 패턴을 살펴보고 유니티에 적용된 프로토타입 패턴인 프리팹에 대해 이해하는 것을 목표로 한다. 프로토타입 패턴이란?) [GoF디자인 패턴]에서는 프로토타입 패턴을 다음과 같이 소개했다. 원형이 되는 인스턴스를 사용하여 생성할 객체의 종류를 명시하고, 이렇게 만든 견본을 복사해서 새로운 객체를 생성합니다. 이 프로토타입 패턴의 핵심을 저자는 다음과 같이 설명했다. 핵심은 어떤 객체가 자기와 비슷한 객체를 스..
-
각 자리수의 역과 합(Number Reverse)보관함 2020. 2. 5. 23:36
기초 다지기에서 배운 내용을 응용하여 문제를 해결해야 하는 실력 키우기입니다. 실력 키우기는 비슷한 문제 유형별로 묶어서 풀어보겠습니다. 이번 포스팅에서는 수학2의 각 자리수의 역과 합을 풀어보겠습니다. 1009 : 각 자리수의 역과 합(Number Reverse) 이 문제에서 주의할 것은 한 가지 밖에 없는데 1의 자리에서 부터 값을 더하고 10을 곱하는 과정에서 오버플로우가 발생할 수 있다는 점 입니다. 그러므로 10을 곱하기 전 남은 자리수를 체크한 뒤 처리해야 합니다. #include using namespace std; int GetReverse(int n); int GetSum(int n); int main(void) { int n; while (true) { cin >> n; if (n ==..