본문 바로가기

전체 글29

백준 10156번 / B4 / C++ 문제주소 : https://www.acmicpc.net/problem/10156문제이름 : 과자문제번호 :10156 난이도 : B4소요시간 : 1m 12s 과자 성공시간 제한메모리 제한제출정답맞힌 사람정답 비율1 초256 MB34941220672023563.272%문제동수는 제과점에 과자를 사러 가는데 현재 가진 돈이 모자랄 경우 부모님께 모자란 돈을 받으려고 한다. 과자 한 개의 가격이 K, 사려고 하는 과자의 개수가 N이고, 현재 가진 돈의 액수를 M이라 할 때 여러분은 동수가 부모님께 받아야 하는 모자란 돈을 계산하려고 한다. 예를 들어, 과자 한 개의 가격이 30원, 사려고 하는 과자의 개수가 4개, 현재 동수가 가진 돈이 100원이라 할 때, 동수가 부모님께 받아야 하는 돈은 20원이다. 과자 .. 2025. 7. 27.
백준 5717번 / B5 / C++ 문제주소 :https://www.acmicpc.net/problem/5717문제이름 : 상근이의 친구들문제번호 : 5717난이도 : B5소요시간 : 1m 01s 상근이의 친구들 성공다국어 시간 제한메모리 제한제출정답맞힌 사람정답 비율1 초128 MB19373147121407077.062%문제상근이의 남자 친구의 수와 여자 친구의 수가 주어졌을 때, 친구는 총 몇 명인지 구하는 프로그램을 작성하시오.입력입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 두 정수 M과 F로 이루어져 있으며, 각각은 상근이의 남자 친구의 수와 여자 친구의 수이다. (1 ≤ M, F ≤ 5)입력의 마지막 줄에는 0이 두 개 주어진다.출력각 테스트 케이스마다 상근이의 친구의 수를 출력한다.예제 입력 1 2 22.. 2025. 7. 27.
project2 개발일지 - 4 [Setting UI] Setting UI 목표기획자가 제작한 설정 UI의 틀을 만드는것을 목표로한다.많은 ui요소가 존재하기에 지루한 반복작업이 될 것으로 보인다.json으로 지정한 이름에 맞게 GameObject들의 이름을 수정한다. 1. 기본적인 틀 맞추기 위 그림은 기획자가 제공한 설정 UI모습이다.배경, 노브 등의 에셋을 제공해줬다.이전 개발일지에서 사용했던 Scaler를 이용해서 모든 해상도에 적용가능하게 제작해준다. 각 ui의 텍스트들은 json으로 연결해줄 것이기 때문에 일단 임시로 세팅되어있다.아직 슬라이더의 값과 각 키에 대한 매핑은 연결되어있지 않다. 각 해상도에 맞게 자동으로 ui가 설정되는 것까지 완성했다. 2. 각 요소들의 네이밍 작업당연하지만 UI는 이미지, 텍스트, 슬라이더 전부다 하나의 요소이다.. 2025. 7. 26.
project2 개발일지 - 3 [Lobby UI 기능연결] Lobby UI 기능연결 목표이전에 만든 UI를 기반으로 기능을 연결한다.당장 연결하지 못한다고 해도 사용할 함수 인터페이스만 뚫어준다. 인프런에서 공부한 프레임워크를 기반으로 만들기 때문에,처음 코드를 본 사람들은 사용하지 못한다. 1. Json과 텍스트 연결우선 각 버튼에 쓰일 내용과 이름을 json에 구조로 만들어준다. 인프런에서 학습한 코드를 기반으로 name을 key로, text를 value로 갖는 Dict를 만들어준다.이는 싱글톤으로 제작된 dataManager에서 관리되며,필요에 따라 컨텐츠 코드에서 사용할 예정이다. 데이터 매니저를 통해 정보를 가져와서 텍스트를 바꿔주면된다.해당 코드에서 GetTMP는 인프런을 통해 학습한 코드 기반이다. test라는 텍스트에서 원하는 텍스트로 잘 바뀐것을.. 2025. 7. 22.
project2 개발일지 - 2 [Lobby UI] Lobby UI 목표팀의 기획자겸 모델러가 제시한 이미지를 바탕으로 작업 예정이다.뒷배경은 인게임 마트 맵을 기반으로 카메라를 세팅할 예정이다.따라서 우선은 로고와 버튼 완성을 우선으로 진행한다. 1. Canvas Scaler참고한 유니티 공식문서https://docs.unity3d.com/kr/530/Manual/script-CanvasScaler.html 캔버스 스케일러 - Unity 매뉴얼캔버스 스케일러(Canvas Scaler) 컴포넌트는 캔버스 내 UI 요소의 전체적인 스케일과 픽셀 밀도를 제어하는 데 사용됩니다. 스케일은 글꼴 크기와 이미지 경계 등 캔버스 아래의 모든 요소에 영향을docs.unity3d.com 게임의 해상도는 기본적으로 1920x1080을 기준으로 한다.해상도를 변경하더라도 .. 2025. 7. 22.
project2 개발일지 - 1 [프로젝트 목표, 역할분배] 🧠 프로젝트 개요협력 공포 게임을 개발하기 시작했다.게임은 '리썰 컴퍼니'에서 영감을 얻었으며, 세계관은 쿠키 매장 직원들이 팩맨에게서 살아남는 콘셉트다.플레이어들은 제한된 시야와 자원을 활용해 협력하고 생존해야 한다. 공포 요소보다는 긴장감과 협동에 초점을 맞춘다. 👤 나의 역할협력 게임인 만큼 네트워크를 고려한 코딩을 공부한다플레이어는 다양한 상태 -> 대기, 걷기, 달리기, 점프, 탈진, 상호작용에서 여러 자원을 다양하게 사용한다기본적인 UGUI를 공부하고 적용한다이번 프로젝트에서 나는 메인 플레이어 로직과 UI를 담당하기로 했다.🔧 학습 기반이번 프로젝트에서는 인프런 강의를 통해 학습한 Unity 개발 프레임워크 일부를 참고하여 구성할 계획이다.예를 들어, 상태 머신 구조의 AI, UI 모듈.. 2025. 7. 22.
project1 개발일지 - 4 [nav mesh agent] 몬스터 이동 시스템 설계 및 구현목표몬스터가 플레이어를 자연스럽게 추적할 수 있도록 NavMeshAgent 기반 이동 시스템을 도입했다.이 과정에서 **이동 타입(지상/비행)**에 따른 차별 처리와, 기존 스탯 시스템과의 연동도 함께 반영했다. 1. NavMeshAgent 도입 – 플레이어 추적 시스템 기반 구축navMeshAgent, obstacle 등으로 유니티에서 제공하는 ai를 사용할 수 있다.몬스터의 플레이어를 향한 길을 찾는 기능을 간단히 구현하기 위해 사용한다. 2. 전체 맵 NavMesh 베이크NavMeshAgent가 정상 작동하기 위해서는 탐색 가능한 영역을 미리 베이크(Bake) 해야 한다.Unity Navigation 창에서 Bake 메뉴 사용Walkable 영역 설정 후 전체 맵을 .. 2025. 7. 15.
project1 개발일지 - 3 [몬스터 스탯 설계] 스탯 시스템 설계 및 몬스터 데이터 연동목표플레이어, NPC, 몬스터 등 다양한 오브젝트가 공유할 수 있는 스탯 시스템을 설계하고, 몬스터 데이터를 JSON 기반으로 관리 및 코드에 연동하는 것이 이번 작업의 핵심이다. 1. 스탯 상속 구조 설계플레이어, 몬스터, NPC 등 다양한 오브젝트가 공통적으로 가지는 전투/생존 관련 스탯을 공유하되, 객체마다 다른 스탯은 개별로 확장할 수 있게 하기 위함. BaseStat(모든 체력 관련 오브젝트가 공통으로 가지는 스탯)- id- hp- maxHp- attackDamage- armor- speed- attackSpeed- attackRangePlayer- maxJumpCount- jumpPower- exp- gold- reviveCount- hpRegen- s.. 2025. 7. 14.
project1 개발일지 - 2 [Unity version control system] 📅 개발일지 - Unity Version Control 도입오늘은 팀 프로젝트 버전 관리를 위해 Unity Version Control (UVCS) 을 도입하게 된 계기와 과정에 대해 기록해본다.처음 프로젝트를 시작했을 때는 대부분의 개발자들이 그렇듯, 우리도 Git과 GitHub를 이용해 버전 관리를 해왔다. 익숙한 커맨드라인, 풍부한 자료, 그리고 브랜치 관리의 유연함 덕분에 큰 불편 없이 초기 개발을 진행할 수 있었다.하지만 개발이 진행되면서 몇 가지 문제점이 눈에 띄기 시작했다.특히 Unity 특성상 발생하는 바이너리 파일 충돌, 대용량 에셋 파일 관리의 불편함, 그리고 충돌 해결 과정에서 생기는 번거로움은 Git의 한계를 체감하게 만들었다. 그런 와중에 Unity 공식 문서를 통해 Unity .. 2025. 7. 13.
project1 개발일지 - 1 [프로젝트 목표, 역할분배] 🎮 project1 개발일지 #1 — 프로젝트 시작과 역할 정리📌 프로젝트 목표이번에 시작한 Super 프로젝트는 Unity를 활용한 팀 프로젝트로, 우리가 초반에 설정한 목표는 "Risk of Rain"을 참고한 로그라이크 액션 게임 개발이다.Risk of Rain은 빠르게 전투가 확장되며 다양한 몬스터와 전투하는 재미가 중심인 게임이다. 이를 참고해 우리 팀도 빠르게 성장하는 난이도, 랜덤 요소, 협동 전투 시스템을 주요 기획 요소로 설정했다.👤 내가 맡은 역할이번 프로젝트에서 나는 주로 몬스터 AI와 UI 시스템을 담당하게 되었다.몬스터 AI적이 플레이어를 감지하고 추격하거나 공격하는 기본 행동을 구현하고, 이후에는 보스 AI와 특수 패턴도 구현할 예정이다.UI 개발게임 내 체력바, 경험치 U.. 2025. 7. 13.
C++ 언어 소개 C++ 언어 소개C++는 강력한 성능과 유연성을 갖춘 프로그래밍 언어로, 다양한 분야에서 널리 사용되고 있다. 이 글에서는 C++의 역사, 언어적 특징, 그리고 프로그램 빌드 과정을 간단히 정리한다.1. C++ 언어의 역사C++는 1980년대 초반, 벨 연구소(Bell Labs)의 Bjarne Stroustrup이 개발하였다. 당시 Stroustrup은 C 언어의 성능과 하드웨어 제어 능력은 유지하되, 대규모 소프트웨어 개발에 적합한 객체지향 프로그래밍 개념을 도입하고자 했다.초기에는 **“C with Classes”**라는 이름으로 시작되었고, 이후 여러 기능이 추가되면서 1983년에 **C++**라는 이름이 붙었다. ‘++’는 C 언어에서 값을 증가시키는 연산자로, C에 기능이 추가되었다는 의미를 담.. 2025. 7. 13.
[게임 프로그래밍 패턴] 1. 구조, 성능, 게임 소프트웨어 구조혹시 정말 잘 짜여진 코드를 본 적이 있나?나는 학생 시절엔 그런 기회도, 볼 생각도 하지 않았다.과제를 제출할 때는 결과물만으로 평가받았다.코드의 질은 중요하지 않았고, 주어진 기능만 구현하면 좋은 점수를 받을 수 있었다.아래는 그 당시 제출했던 코드의 일부이다.for (int i = 0; i 지금 보면 의미를 알 수 없는 매직넘버와 변수명, 어떤 조건을 검사하는지조차 감이 오지 않는다.함수로 분리하지 않아 중복되는 코드가 많았고, 조건이 바뀔 때마다 모든 코드를 일일이 수정해야 했다.무려 2학년까지 이런 끔찍한 코드들을 작성했었다.2학년 말부터 프로젝트의 규모가 커지면서, 여러 서적과 강의를 접하고 나서야 비로소 이런 문제들을 깨닫기 시작했다.좋은 소프트웨어 구조좋은 소프트웨어 구조란,.. 2025. 5. 29.