[Goodbye, 2025] 결과를 위한 과정의 한 해

12월 31일은 참 신기한 날이다.끊임없이 이어지는 시간이, 그 사이의 미련을 단칼에 끊어낸다.나의 2025년은 어땠을까.기대도, 불안도 많았던 올 한 해가 이렇게 끝이 난다. 오지 않은 앞날과 다름없는, 지나온 과거를 되돌아본다.휴학, 그리고 창업 도전.원래대로라면 2025년, 난 대학교 4학년이 되고, 졸업할 시기였다.WAP에서 좋은 사람들과 게임들을 만들어봤고, 또 많은 이야기를 나누며 성장했다. 기대에 미치는 완성도는 아니었지만 유료 출시까지 이뤄냈었다. 포트폴리오론 충분했다. 실력도 향상됐다. 개발자로서 바라볼 목적지가 생겼다. 간결하고, 술술 읽히며, 코드 없이도 이해되는 명확한 로직. 그러니 앞으로 나아가며 실력을 갈고닦으면 될 일이었다. 나를 아는 많은 사람들은, 이정도면 충분하다고 했을 ..

일상 2025.12.31 0

[독서 감상] "함께 자라기" - 자라기 편

서론동아리 선배가 강력 추천해주셔서 언젠간 읽어야지~ 하고 있다가, 도서관에 들른 김에 빌려서 지하철에서 틈틈이 읽었던 책. 읽은 기억이 날아가기 전에, 책의 간단한 내용들과 읽으며 느낀 점을 기록하고자 한다.개요이 책은 개발자(그리고 모든 팀들)에게 있어, 함께 자라기가 얼마나 중요한 것인가, 애자일이란 무엇인가를 설파하는 책이다. 책은 크게 함께, 자라기, 애자일 3개의 단원으로 이뤄져 있으며, 각각의 중요성을 여러 가지 사례와 함께 일깨워준다.책 전체의 감상문을 쓰기엔 글이 너무 길어지므로, 여기선 1단원(자라기)과 2, 3단원(함께, 애자일)로 나눠 포스트를 작성하겠다.자라기이 책의 첫 장은 자라기로 시작한다. 개인이 성장하는 방법에 대해 몇 가지 방법을 소개해주는데, 확실히 도움이 된다고 느꼈다..

일상 2025.07.16 17

[Goodbye, 2024] 2024년을 돌아보며

또 한 해가 지나간다나이가 들수록 시간은 빨리 지나간다던가. 2023년 듣던 강의도 엊그제처럼 생생한데, 어느새 2025년이 다가오고 있다.올해는 친한 사람들 중 졸업하는 사람이 많아서 그런가, 괜스레 아쉽고 울적해지기도 한다. 하지만 과거에 매여 있어선 앞으로의 인연을 잃는 것이니, 잘 마무리하고 보내주는 것 역시 중요한 일이지. 이제 2024년에 있었던 일들을 하나씩 되짚어보자. 더 많은 사람을 만나보자2023년, 전역 후 첫 복학을 맞은 나는 군대에서의 일들을 바탕으로 한 가지 목표를 세웠다. 처음 보는 사람에게도 말을 걸어보고, 모든 사람을 좋아해 보자. 쉽지 않은 일이었지만, 이때를 기점으로 세상이 크게 바뀌었다. 그전까진 1명만 있으면 된다는 타입이었고, 그 한 명을 여자친구로 채웠기에 누구와..

일상 2024.12.31 5

[2024 재밌넥] 프로그래머 참가 후기

게임잼을? 넥슨에서? 내가?!이전부터 넥슨 게임을 참 다채롭게도 해왔지만 (크아, 메이플, 마영전, 카트라이더, 버블파이터... 나열하려면 끝도 없다), 본격적으로 넥슨 취업에 관심이 생겼던 건 야생의 땅: 듀랑고 이후였다. 참 좋아하던 게임이었는데, 얼마 못 가 서비스 종료를 해야 했던 게임. 그러나 그만큼 한계가 보였기에 납득할 수 있었던 게임. 이때까지만 해도 좋은 게임을 만들 순 있지만, 아직 해오던 BM에 익숙해 힘들겠다고 생각했었다. 그 생각을 날려버린 게 바로 데이브 더 다이버였으며, 이후 지금까지 내게 넥슨(정확히는 민트로켓)은 일하고 싶은 회사 1위가 되었다. 국립부경대학교 | 컴퓨터·인공지능공학부 icms.pknu.ac.kr 재밌넥 소식을 알게 된 건, 동아리 선배가 준 학과 공지..

일상 2024.07.17 4

공부를 한다는 것은

서론 이번엔 개모임으로 하루만 공부하고 A 받는 법이란 제목의 발표를 진행했다. 개모임의 참여도 독려할 겸, 시험 기간에 진행한 발표인데, 그 덕인지 사람도 꽤 많이 몰렸다. 목차는 아래와 같다. 발표하게 된 이유발표를 진행한 가장 큰 이유는 에 다음과 같은 구절이 있어서다. 주변의 전문가로부터 전문성을 뽑아내는 것은 자신의 전문성을 빨리 높일 수 있는 방법이다. 이때 중요한 것은 “프로그래밍 언어를 빨리 배우는 비결이 무엇인가요?”라고 묻지 않는 것이다. 이러한 질문은 형식적인 답변을 받을 가능성이 매우 높다. 대신 구체적인 사건에 대해 말하도록 유도하면 전문가가 구체적인 기억들을 상기하면서 의미 있는 내용을 얻을 수 있다. 결국 무언가 잘하고 싶다면 이미 잘하는 사람을 관찰하고 인터뷰하는 것이 큰 ..

개발론 2025.10.27 1

“프로그래밍 언어도 언어다.” - 코드 가독성을 높이려면

서론 5월 9일, 개모임에서 발표했던 내용에 몇 가지를 덧붙여, 최근 코드를 짜며 든 생각을 정리한 글이다.개모임은 부경대학교 프로젝트 동아리 WAP의 내부 행사로, 발표자들이 원하는 주제를 가지고 10~20분간 짧은 발표를 하고, Q&A를 진행하는 일종의 세미나다. 그래서 이게 무슨 주제인가?하면 코드 가독성을 높이는 방법에 관한 글이다. 클린 코드와의 차이점이 있다면, 클린 코드가 인수 수, 함수/변수명의 길이, if 뎁스, KISS, YAGNI 등 코드의 구조에서 깔끔하게 쓰는 법을 연구한다면, 이 글은 영어 문장으로서의 가독성에 중점을 두고 작성했다는 점이다. 코드 역시 글이다. 코드 작성 시 어떤 목표를 가지고 작성해야 하며, 어떤 방법을 사용하면 가독성을 높일 수 있는지. 다년간의 코드 작성 ..

개발론 2025.07.03 6

[궁금증 해결] 2α를 쪼개고 곱할 때, 왜 최댓값은 α × α일까?

서론별 건 아니고, 샤워할 때 간단한 문제나 하나 풀고 있자~ 생각하면서 백준 14606번 피자 (small) 문제를 보고, 씻고 있었다. 대충 $N$개의 피자판이 쌓여 있을 때, 피자판을 둘로 나눈다. 예를 들어, $N$이 8이면 4와 4, 혹은 3과 5처럼 나눌 수 있다.이때 나눠진 피자판의 개수를 서로 곱하면 즐거움이 나온다. 이걸 더이상 나눌 수 없을 때까지 반복한다. 피보나치 저리가라 할 기초적인 DP 문제라 문제 자체는 쉬웠는데, 간단한 암산으로도 아래처럼 풀 수 있었다. 일단 즐거움이 제일 커져야 하니까, N를 2로 나눠서.... 그리고 곱한 값에 각 칸의 수를 더하면.... 거기서, 갑작스레 든 의문. 왜 어떤 수를 쪼개서 곱할 때, 최댓값은 항상 균등할 때 나올까?원리를 몰라도 습관..

알고리즘 2026.02.11 0

우선순위 스택은 왜 없을까?

서론턴제 게임을 개발하다, 우선순위 스택이 필요한 순간이 생겼었다.우리 게임은 스택을 기반으로 플레이어와 적의 스킬을 관리했는데, 상태이상을 스킬화하면서 우선순위를 만들 필요가 생긴 것. 당연히 처음엔 스택 4개(당시 상태이상이 3가지였다.)를 동시에 운용하는 방식을 생각했는데, 문득 우선순위 큐도 있는데, 우선순위 스택은 없나?하는 생각이 들었다. 오늘은 그에 관한 간단한 고찰이다. 큐, 스택, 우선순위 큐거창하게 큐와 스택의 차이부터 설명할 수도 있지만, 이는 그리 중요하진 않으니 간단히 넘어가고 바로 본론으로 들어가보겠다. 큐와 스택의 차이는 위처럼, 먼저 넣은 게 먼저 나오냐, 나중에 나오냐의 차이다. 그럼 우선순위 큐는 무엇일까? 우선순위 큐는 개념적으로, 위처럼 값을 넣은 순서가 아닌 가중..

알고리즘 2025.12.20 0

[Visual Stduio] scanf_s 오류 무시하기

더보기 C4996 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. 그저 과제를 풀 뿐임에도, 마이크로소프트는 보안 상의 이유로 scanf 대신 scanf_s를 쓰라고 강요한다. 막상 scanf_s로 바꾸면 백준에서 또 컴파일 에러가 난다. 귀찮은 이 에러를 해결하는 법을 알아보자. 1. scanf_s 사용하기 당연하지만 가장 쉬운 방법은, scanf_s를 사용하는 것이다. 다만 scanf_s를 사용하면 백준 등 다른 컴파일러에 사용할 땐 컴파일 에러가 난다. 상당..

알고리즘 2023.09.05 0

[알고리즘] 확장 유클리드 알고리즘 구현하기

이번 글에선 유클리드 알고리즘의 진화판, 확장 유클리드 알고리즘(Extended Euclidean Algorithm)에 대해 이해하고, 구현해보자. 유클리드 알고리즘은 두 수 a, b의 최대공약수를 구하는 알고리즘이었다. 유클리드 알고리즘을 모른다면 아래 글을 참고하자. [알고리즘] 유클리드 알고리즘 구현하기 유클리드 알고리즘(Euclidean Algorithm)은 유클리드 호제법으로도 불리며, 두 수 a, b의 최대공약수 gcd를 구하는 방법이다. 유클리드 알고리즘의 기본 동작 원리는 간단히 다음과 같이 쓸 수 있다. 두 autumncat.tistory.com 확장 유클리드 알고리즘이란? 확장 유클리드 알고리즘은 sa + tb = gcd(a, b)를 만족하는 s, t를 구하는 알고리즘이다. 증명은 생략..

알고리즘 2023.05.14 2

[알고리즘] 유클리드 알고리즘 구현하기

유클리드 알고리즘(Euclidean Algorithm)은 유클리드 호제법으로도 불리며, 두 수 a, b의 최대공약수 gcd를 구하는 방법이다. 유클리드 알고리즘의 기본 동작 원리는 간단히 다음과 같이 쓸 수 있다. 두 수 a, b가 있을 때, a를 b로 나눈 나머지를 r이라고 하면 1. a와 b의 최대공약수는 b와 r의 최대공약수와 같다. 이를 gcd(a, b) = gcd(b, r)과 같이 나타낼 수 있다. 2. gcd(a, 0) = a이다. 만약 두 수를 15와 9라고 두자. 그럼 다음과 같이 전개할 수 있다. gcd(15, 9) = gcd(9, 6) = gcd(6, 3) = gcd(3, 0) = 3 15와 9의 최대공약수인 3을 구할 수 있다. 그렇다면 이번에는 위 알고리즘을 코드로 구현해보자. 여기..

알고리즘 2023.05.09 0

[Unity] 에디터에선 문제 없지만 빌드하면 안 될 때

Zenocide 출시를 위해 시험 공부도 미루고 마무리 중인데, 큰 문제가 발생했다. 위는 로비에서 불러오기를 눌렀을 때 뜨는 화면이다. 우측의 로딩 화면이 나타난 후, 좌측처럼 진행하던 스토리를 그대로 띄워야 한다. 그런데, 에디터에선 잘 되는데 빌드만 뽑으면 씬이 멈춰버렸다. 이번엔 그 해결 과정을 기록해보고자 한다.대체 뭐가 문젠데?우선, 도저히 감을 못 잡겠어서 Chat-GPT를 이용해 문제 발견에 나섰다. 아래는 GPT와 나눈 대화 중 일부다. 나에디터에선 데이터 로드 후 씬 전환이 잘 되는데, 빌드 후 실행해보면 로딩 화면에서 멈춰. BGM이 제대로 나오는 걸보면 씬은 넘어간 것 같아. 어떤 증상일까? GPT빌드 후 로딩 화면에서 멈추는 증상은 일반적으로 비동기 로딩, 리소스 접근, 또는 스크..

삽질의 기록 2024.10.27 6

[C++] 소인수분해: 두 소수 p, q의 곱 n이 주어질 때, p, q 알아내기

이 사람은 왜 이런 짓을 했는가? 시험 기간인데 시험 공부는 하기 싫어서 간단한 알고리즘을 짜봤다. 문제 RSA 알고리즘을 배울 때 꼭 한 번씩 들어보는 말. 두 소수 p, q가 주어졌을 때 n을 계산하는 건 매우 단순한 일이지만, 두 소수의 곱 n이 주어졌을 때 p, q를 알아내는 건 NP 문제다. 그래서 어떻게 하면 n이 주어졌을 때 p, q를 빠르게 알아낼 수 있을까?라는 질문이 샤워 도중 떠올랐고, 샤워하면서 한 생각을 코드로 옮겨봤다. 알고리즘 거창한 문제에 비해 내 생각은 단순했다. twosum 문제를 좀 응용하면 되지 않을까? 정확한 사고 과정은 아래와 같았다. 두 소수 p, q를 곱한 n이 있다면, p와 q는 sqrt(n)에서 비슷하게 떨어져 있지 않을까? 3 * 13, 7 * 13을 해봄..

삽질의 기록 2023.12.12 0

[Unity] UI Text 가비지 제거, 삽질의 기록

※ 해당 글은 ToString()으로 인해 발생한 가비지를 제거하려는 시도로, 삽질이 많습니다. 결론은 3. 결과부터 참고하시면 됩니다. ※ 테스트 시 자주 프레임 드랍이 되는 것을 목격하고, 유니티 프로파일러로 분석하고 있었다. 원인은 자주 일어나는 가비지 콜렉터 실행. 프로파일러로 가비지가 쌓이는 부분을 추적했다. void UpdateScorePanel() { scoreText.text = GameManager.Instance.score.ToString(); } 해당 함수의 내용은 위와 같았다. int값인 score를 ToSting()으로 변환시킬 때마다, 가비지가 생성된 것. 이 함수는 플레이어가 점수를 얻을 때마다 실행되므로, 계속된 플레이 시 부담이 클 것 같았다. 그래서 이 부분을 없애보기로 ..

삽질의 기록 2023.02.13 0

[백준/Python3] 12015번. 가장 긴 증가하는 부분 수열 2 - 가장 쉬운 원리 이해

문제https://www.acmicpc.net/problem/12015 자야 하는데, 이미 알고리즘 문제 풀이로 도파민이 돌아버려서 잠이 안 왔다.마침 가장 긴 증가하는 부분 수열(Longest Incresing Subsequence, 이하 LIS) 문제를 푼 김에, 호기롭게 플래티넘 문제를 구경하러 갔다. 그리고 n이 1,000,000인 거보고 아, 이건 DP로 안 풀린다. ($O(N^2)$라서)라는 걸 직감하고, $O(n \log n)$으로 풀 방법을 구글링했었다. 그러나 설명이 좀 아쉬운 부분들이 많아, 나도 정리할 겸, 다른 사람들에게도 도움될 겸 이렇게 글을 작성한다.풀이학습 과정 $O(n \log n)$로 푸는 열쇠는 이분 탐색이다.하지만, 많은 사람들이 왜 이 문제가 이분 탐색인가를 시원하게..

백준 2026.02.13 0

[백준/Python3] 25419번. 정수를 끝까지 외치자

문제https://www.acmicpc.net/problem/25419 알고리즘 문제는 매일 풀고 있지만, 그때마다 항상 블로그를 쓰진 않았다.이전에 비슷한 걸 풀어서 쓸만한 내용이 없거나, 혹은 이동 중에 휴대폰으로 풀 때도 있어 글을 쓸 환경이 아닐 때도 있었으니까. 그래서 DP 문제를 여럿 풀면서, 원래대로라면 풀기만 하고 올릴 생각은 없었는데... 꽤 골때리는 문제를 만나 이렇게 포스팅한다.1. 첫 번째 풀이사고 과정가장 처음까지 돌아가면, 문제 조건이 엄밀하지 않아서 애를 먹었었다. 잘못 만든 문제다 이거.문제엔 단순히 "두 명의 학생이 규칙에 맞게 플레이했을 때"라고만 쓰여 있는데, 정확히는 최선의 방법으로 플레이했을 때가 되어야 한다. (대충 플레이하면 정답은 0일 수도, 1일 수도 있는 슈..

백준 2026.02.11 0

[백준/Python3] 14238번. 출근 기록

문제https://www.acmicpc.net/problem/14238 요즘 너무 브~실 문제만 푼 것 같아서, 문법은 그때그때 검색하며 익히기로 하고, 다시 골드로 회귀했다.백준을 그만두기 전, 가장 좋아했던 분야가 DP였기에 DP 랜덤 골드 문제를 하나 골랐는데, 결론부터 말하면 푸는 데엔 실패했다. 그래서 이번엔, 풀이보단 일종의 학습 기록이 될 것 같다. 풀이가 궁금하다면 아래 블로그를 참고하자. 설명이 잘 되어 있다. 나도 이 블로그를 바탕으로 공부할 예정이고. Dynamic Programming 5: DP 배열 설정의 중요성 (백준 14238, 17404, 12969번 파이썬)백준 14238번: 출근 기록 문제 설정은 간단하다. 각 알파벳 A, B, C에 대해서 아래 조건을 금방 파악할 수 ..

백준 2026.02.08 0

[백준/Python3] 1105번. 팔

문제https://www.acmicpc.net/problem/1105이번엔 좀 쉬운 문제로 날먹하려고 가져 왔다.1. 첫 번째 풀이사고 과정L 이상, R 이하 수 중에서, 8이 가장 적게 들어간 수의 8의 개수를 구하는 문제. 8을 안 쓸 수 있다면 안 쓴다. 아주 간단한 해법이다. 88과 89가 있다면, 89를 쓰면 된다. 즉, 웬만한 상황에서, 8을 안 써도 된다면 그냥 안 쓰면 된다. 자릿수를 전부 따로따로 보고, 8을 안 골라도 되면 안 고른다. 그럼 언제 8을 안 써도 될까? 이는 다음 2가지 경우가 있다.L과 R의 자리 중 하나라도 8이 아닐 때 (ex. 880과 889라면, 앞의 8 두개는 무조건 써야만 하지만, 맨 뒤는 8을 안 써도 된다)둘 모두 8이더라도, 그 앞자리에 8이 아닐 때. ..

백준 2026.02.06 0

[백준/Python3] 1024번. 수열의 합

문제https://www.acmicpc.net/problem/1024N과 L이 주어졌을 때, 길이가 L 이상이고, 모두 더해 N이 되는 연속된 수열을 구하는 문제다.1. 첫 번째 풀이사고 과정몇 가지 떠올린 게 있었다. 1부터 L개 더해놓고, 오른쪽으로 한 칸씩 이동한다던지... (1 + 2 + 3이라면, 1을 빼고 4를 더해 2 + 3 + 4를 만드는 식)아니면 N을 L로 나눈 후, 거기부터 왼쪽으로 움직여가며 찾는다던지... 등등. 그러다 문득 떠올린 게, 정답이 성립하는 특수한 조건이 있지 않을까? 하는 것이었다. 예를 들어, N = 18, L = 3라면 정답은 5 + 6 + 7이 된다.이는 조금 돌려 생각해보면, 6 + 6 + 6을 만든 후, 맨 앞의 6에서 1을 빼, 맨 뒤의 6에 더한 것이다...

백준 2026.02.02 0