가끔 쓰다 마는 블로그
-
Your Wor(l)d
Your Wor(l)d 개발 로그 #0001 - whlie(true) {아키텍처 고민}
시련이 대충 3번 정도 있었다. 첫 번째로 일단 맨 처음 구현은 진짜 제미나이한테 전적으로 "해 줘"하고 기능 수정을 하는 방식으로 진행했다.그랬더니 어느 순간 이 코드는 어디서 관리하고 있지? 이 코드는 왜 이렇게 덩치가 크지?아 이대로 가면 절대 나중에 유지보수 못한다.라는 느낌이 왔다. 그래서 일단 기능 기반 폴더 구분을 사용하여 리팩터링 하였다.그랬더니 확실히 "아 이건 여기서 담당하는구나" 느낌은 왔다. 두 번째로 혼자서 600줄 가까이 담당하는 코드가 있었는데뭐 줄수로 자를 수도 없고 어떻게 해결하지? 하는 난감한 순간이 있었다. 그래서 AI한테 물어보니 소프트웨어 아키텍처 중 매니저와 오케스트레이터에 대해 알려주었다. 매니저 : 특정 객체의 상태 관리오케스트레이터 : 여러 객체로 이루어진 ..
-
Your Wor(l)d
Your Wor(l)d 개발 로그 #0000 - 프롤로그
2026년 8월 어느 날, 2학년 방학 동안 정올과 슬더스 2만 돌리던 나는 생각했다.아 정말 이대로 가도 괜찮은가..?게임 개발 해보고 싶다고만 한지 N년차... 마침 구글이 대학생 제미나이 프로 지원까지 해줘서 지금이 딱 적기라고 생각했다.그리하여 군대에서 노트에 끄적끄적 대던 아이디어 가지고 와서 무작정 시작하게 된 게임 개발!"Your Wor(l)d"컨셉에 대해 설명하자면 단어(word)를 통해 세계(world)를 지키는 "워드 크래프팅 2D 탑뷰 로그라이트 게임"이다.(게임 장르의 세계가 상당히 복잡하다는 것도 개발하면서 알았다.)근데 사실 분할 컴파일이나 객체지향 설계도 이제 막 배운 입장에서 게임 개발은 험난한 과정이 정말 많았다.앞으로 비정기적으로 써내려 가려고 한다.개발로그 #0001부터..
-
백준
18789. 814 - 2
문제https://www.acmicpc.net/problem/18789분석입력 요구 사항:1. 없음 출력 요구 사항:1. 1부터 8140까지 읽을 수 있는 8 * 14 크기의 숫자 112개짜리 그리드풀이최근에 무작위화 몇 개 풀었다고 자신감이 하늘을 찌른 건지 이게 왜 루비임? 하고 한번 도전해 봤는데 쉽지 않은 과정이었다..***아래 점수 산정은 문제의 점수 기준이 아닌, 1부터 8140까지 찾은 수의 개수 + 1임을 알린다*** 1단계 : 수작업맨 처음에는 이게 루비급인가? 대충 약팔기 스타일로 숫자 많이 배치할 수 있게 접근하면 되는 거 아님? 해서 종이에 여러 수열을 끄적여봤다. DFS로 채점기도 만들어서 계산했는데 6000 중반이었다. 수작업은 절대 아닌 것 같았다. 2단계 : 시도 1 - 완전..
-
백준
34685. 이차방정식
문제https://www.acmicpc.net/problem/34685분석입력 요구 사항:1. k - -1E+7(-1000만)출력 요구 사항:1. x^2 + px + kp = 0의 근이 모두 정수인 서로 다른 p 개수2. x^2 + px + kp = 0의 근이 모두 정수인 서로 다른 p의 합풀이결국 p에 대한 방정식 아닌가? 그래서 정리했더니 무리함수가 나왔다. p와 만나는 조건 따져서 정수범위에서 x를 픽했다. 잡담재활 PS는 언제나 힘들다..#include#include// ---------- 사용자 정의 자료형 ----------using namespace std;using LL = long long;using ULL = unsigned long long;using LD = long double;..
-
백준
1041. 주사위
문제https://www.acmicpc.net/problem/1041 분석입력 요구 사항:1. N - 12. A, B, C, D, E, F - 1 출력 요구 사항:1. mn - 5개의 면에 쓰여 있는 수의 합의 최솟값 풀이 5개의 면에 쓰여 있는 수의 합의 최솟값을 어떻게 구할까? 처음엔 그냥 "가장 큰 면만 아래로 숨겨서 초대형 주사위를 만들면 되는게 아닌가?" 싶었는데 나의 관찰이 부족하였다. 각 면에서 주사위의 위치에 따라 보이는 면의 개수가 다르다는 것을 알게 되었다. 따라서 일단 특정 면에서 위치 별로 주사위의 면이 몇 개나 보이는지, 또 그런 주사위가 총 몇 개인지 세보았다.그러면 짜잔하고 위와 같이 나온다. 그렇다면 이제 1, 2, 3개의 면이 보일 때 최솟값에 대해 알아보자 1. 면이 1..
-
백준
13460. 구슬 탈출 2
문제 https://www.acmicpc.net/problem/13460 13460번: 구슬 탈출 2 첫 번째 줄에는 보드의 세로, 가로 크기를 의미하는 두 정수 N, M (3 ≤ N, M ≤ 10)이 주어진다. 다음 N개의 줄에 보드의 모양을 나타내는 길이 M의 문자열이 주어진다. 이 문자열은 '.', '#', 'O', 'R', 'B' www.acmicpc.net 분석 입력 요구 사항: 1. N - 3> p.first >> p.second; return p; }; template vector LoadVector(const size_t SIZE) { vector V(SIZE); for (T& e : V) { cin >> e; } return V; } template vector LoadVector(con..
-
백준
21758. 꿀 따기
문제 https://www.acmicpc.net/problem/21758 분석 입력 요구 사항: 1. N - 3 p.second; return p; }; template vector LoadVector(const size_t SIZE) { vector V(SIZE); for (T& e : V) { cin >> e; } return V; } template vector LoadVector(const size_t SIZE) { vector V(SIZE); for (pair& p : V) { p = LoadPair(); } return V; } template vector Load2DVector(const size_t R, const size_t C) { vector V(R, vector(C)); for (v..
-
백준
23970. 알고리즘 수업 - 버블 정렬 3
문제 https://www.acmicpc.net/problem/23970 23970번: 알고리즘 수업 - 버블 정렬 3 4 6 5 1 3 2 -> 4 5 6 1 3 2 -> 4 5 1 6 3 2 -> 4 5 1 3 6 2 -> 4 5 1 3 2 6 -> 4 1 5 3 2 6 -> 4 1 3 5 2 6 -> 4 1 3 2 5 6 -> 1 4 3 2 5 6 -> 1 3 4 2 5 6 -> 1 3 2 4 5 6 -> 1 2 3 4 5 6. 총 11회 교환이 발생하고 일곱 번째 교 www.acmicpc.net 분석 입력 요구 사항: 1. N - 5 e; } return V; } template vector LoadVector(const size_t SIZE) { vector V(SIZE); for (pair& ..
-
백준
17298. 오큰수
문제 https://www.acmicpc.net/problem/17298 17298번: 오큰수 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에 수열 A의 원소 A1, A2, ..., AN (1 ≤ Ai ≤ 1,000,000)이 주어진다. www.acmicpc.net 분석 입력 요구 사항: 1. N - 1=c이면, a>=c이다. 지금 상태에선 NGE(a), NGE(b) 모두 존재하지 않는다. 3. a p.first >> p.second; return p; }; template vector LoadVector(const size_t SIZE) { vector V(SIZE); for (T& e : V) { cin >> e; } return V; } template ve..
-
백준
14889. 스타트와 링크
문제 https://www.acmicpc.net/problem/14889 14889번: 스타트와 링크 예제 2의 경우에 (1, 3, 6), (2, 4, 5)로 팀을 나누면 되고, 예제 3의 경우에는 (1, 2, 4, 5), (3, 6, 7, 8)로 팀을 나누면 된다. www.acmicpc.net 분석 입력 요구 사항: 1. N - 4 p.second; return p; }; template vector LoadVector(const size_t SIZE) { vector V(SIZE); for (T& e : V) { cin >> e; } return V; } template vector LoadVector(const size_t SIZE) { vector V(SIZE); for (pair& p : V) ..