HEADLINE
2024 예술적인 소프트웨어 프로젝트 : Project GK
2024 SWF : Project RM
[2024 SWF] Project RM 개발일지 #4
[2024 SWF] Project RM 개발일지 #4
Project RM
2024.09.02 22:38
이번에는... 아주 큰 발전을 해냄과 동시에 아주 크게 건강을 해쳤다.'만들래' 라는 인디게임 플랫폼에서 주최하는 10분 게임 콘테스트에 Project RM의 데모를 출품하기로 하여 일주일간 엄청난 개발 러쉬에 들어갔다.로고 제작게임의 성격을 결정하는 로고를 제작했다.게임이 어둡고, 망한 도시를 배경으로 하고 있어서 Dystopia라는 영어단어를 가져왔고, 그 안에서 사는 사람이라서 -ian을 붙여 Dystopian이라는 게임 이름을 정하게 되었다.그리고 도트 게임이기에 도트로 제작했고, 리듬 게임이기에 악보같은 디자인도 추가하였다. 그렇게 탄생한 로고는...이런 로고가 탄생하게 되었다!느낌 가는대로 손 닿는대로 만든 로고였는데 팀원들에게 호평을 받아서 다행이었다.튜토리얼 씬 완성저번에 하고있던 튜토리얼..
[2024 SWF] Project RM 개발일지 #3
[2024 SWF] Project RM 개발일지 #3
Project RM
2024.08.17 11:49
이번 주에는 전에 했던 대사 말하기랑 대사 진행을 가지고 본격적으로 튜토리얼 씬 제작에 들어갔다.플레이어 코루틴플레이어 이동 코루틴전에 대사 말하기를 코루틴으로 구현했는데,  이걸 이용해서 플레이어를 이동시켜주는 것도 코루틴으로 구현해서 직접 조작하지 않고도 플레이어가 움직이도록 했다. IEnumerator PlayerMoveX(float destinationX, float moveSpeed) { int direction = 0; if (player.transform.position.x destinationX) { direction = -1; player.transform.localScale = new Vector3..
[2024 SWF] Project RM 개발일지 #2
[2024 SWF] Project RM 개발일지 #2
Project RM
2024.08.10 00:44
이번에는 전에 했던 적을 조금 다듬었고, 튜토리얼 씬 제작에 들어갔다.튜토리얼 씬 개발우선 내가 구상한 튜토리얼 씬에는, 외부 도시를 보여주는 배경이 원근감 효과를 주며 지나가고, NPC 하나가 말을 걸며 조작법과 게임의 컨셉을 알려주는 요소가 있었다. 구상이 얼추 끝나고 바로 개발에 들어갔다.Parallax 배경 구현내가 생각하고있던 원근감 있는 배경이 Parallax Background라는 용어로 존재하고있었다.작년에는 Parallax말고 원근감을 달라고 구글을 잡고 흔들었는데 알고보니 같은 것이었다...아무튼 그래서 Parallax Background는 간단하게 설명하면, 가까이 있는 배경사물은 빠르게 움직이고, 먼 배경사물일수록 천천히 움직이게 하여 원근감을 주는 기법이다.이것을 코드로 해석하면,..
[2024 SWF] Project RM 개발일지 #1
[2024 SWF] Project RM 개발일지 #1
Project RM
2024.07.25 23:18
이번 학기에 뜻이 맞는 동기 팀원들을 모아 소프트웨어 페스티벌에 주니어 부문으로 나갈 팀을 꾸렸다.내가 팀장을 맡게 되었고, 기획자이자 개발자이자 작곡가로도 참여하게 되었다.작곡가가 왜 있냐면... 리듬게임 프로젝트를 하고있기 때문이다.개발을 시작한지는 한 달 정도 되었다. 그래서 진척 사항이 조금 많다.기획 완료 원래 1인 프로젝트로 진행하려고 했던 기획이 있었는데, 그걸 참고해서 이번 프로젝트의 기획을 완료했다.간단하게 설명하자면,던전 속에서 펼쳐지는 리듬 액션 로그라이크리듬에 맞춰서 공격을 하고, 던전 안의 있는 적들을 물리치며 게임을 진행한다.적 구현 완료여기에 나오는 적들은 모두 리듬에 맞춰 공격을 하기 때문에, 일단 키를 눌러서 공격을 하게 한 후, 나중에 리듬 노트 쪽이 구현이 완료되면 그 ..
싱글벙글 사이드 프로젝트
[2024-2 겜엔기] Project AS 개발일지 #4
[2024-2 겜엔기] Project AS 개발일지 #4
Side Project
2024.11.01 23:30
저번에는 플레이어의 기본 공격을 구현했었다.그래서 이번에는 플레이어의 스킬을 구현했다.스킬은 총 4가지가 있고, 그 중 일단 Q스킬 1가지만 중간 발표 전까지 구현하는 것이 목표였는데,과연 목표를 달성했을까?적 탐지설명하기에 앞서, Q스킬은 롤의 카이사 Q스킬 처럼 유도탄을 발사해 데미지를 입히는 것이다.그러려면, 자신 주위의 적들이 얼마나 있는지 일단 파악하여 그 적들을 변수든 리스트든 어떤 방식으로든 저장해야한다. 나는 가장 간단한 방법을 선택했다.플레이어에게 탐지 범위만큼의 트리거 형식의 콜리전을 주고, 거기에 들어오면 리스트에 넣었다가 다시 나가면 리스트에서 지워주는 것이다.그리고, 적을 저장하기 위해 액터 오브젝트 리스트 변수를 하나 만들어 거기에 저장과 삭제를 해줬다.여기에 새로 사용한 노드 ..
[2024-2 겜엔기] Project AS 개발일지 #3
[2024-2 겜엔기] Project AS 개발일지 #3
Side Project
2024.10.07 22:29
저번 개발때 플레이어 이동을 구현해서, 이번에는 플레이어 공격을 구현해보았다.단순하긴 해도 애니메이션을 직접 블루프린트 내에서 다루는 경험은 이번이 처음이라 조금 헤매기도 한 것 같다. 그럼 결과물은 어떨까?Hit ScanHit Scan(히트 스캔)이란, FPS에서 사용되는 공격 판정 방식이다.보통 총기류로 공격을 하면 현실에서는 투사체가 날아가면서 대상을 공격하지만, 게임에서는 연산 속도가 있기 때문에 현실만큼 빠른 속도를 적용한 투사체를 날리면 그 속도를 연산 속도가 못따라가서 판정이 잘 안되는 경우가 있다.이럴 때에는 투사체를 날리는 것 대신, 공격 명령이 들어오면 그 즉시 바라보는 대상에게 피격 판정을 내려버리는 시스템을 사용하는데, 이것이 히트 스캔이다.예를 들자면 오버워치의 위도우메이커, 캐서..
[2024-2 겜엔기] Project AS 개발일지 #2
[2024-2 겜엔기] Project AS 개발일지 #2
Side Project
2024.09.29 01:46
저번에 개발을 위한 모든 세팅을 끝내고, 이번에는 진짜 개발에 착수했다.이번에 목표로 한 것은 플레이어의 이동을 완벽히 하는 것이다. 목표를 과연 달성했을까?Aim OffsetFPS 장르이기에 에임 구현은 무엇보다도 필수이다. 그리고 투사체 구현은 나중이기 때문에, 일단 플레이어 캐릭터가 내가 마우스를 돌리는 시점을 보게 하는 것을 구현해야함을 느꼈다.구글에 정말 여러가지 검색을 한 끝에, 이러한 것을 Aim Offset이라고 부른다는것을 알게 되었다.Aim Offset을 정확히 설명하자면, '캐릭터의 상반신 움직임이 에임을 따라오게 하는 것' 이다.그래서, 에셋에서 기본 제공되는 걸 이용해서 에임을 따라오게끔 해줬다.일단 이 블루프린트는 에셋에서 주는 기본 애니메이션 BP이다. 근데, 그냥 실행하면 에..
[2024-2 겜엔기] Project AS 개발일지 #1
[2024-2 겜엔기] Project AS 개발일지 #1
Side Project
2024.09.29 00:02
2학년 2학기가 되면서 게임엔진기초 라는 수업을 듣게 되었다. 이 수업에서는 팀을 꾸려서 언리얼 엔진을 이용한 팀 프로젝트를 제작하는 것이 최종 과제이다.그래서, 2주차 수업 때 나를 포함해 5명으로 이루어진 팀을 배정받고 바로 기획 후에 개발에 들어갔다.지금은 개발이 조금이나마 된 상태이지만, 개발 전에도 할 이야기가 많아서 두번에 나눠서 쓰려고 한다.그리고, 이 프로젝트의 개발일지는 종강때가지 계속 써볼 것이다.그렇다면 시작~기획 완료우선, 팀원중에 언리얼에 친숙한 사람이 없어서 기획의 볼륨은 작게 가져가고자 했다. 조금만 크게 가져가도 구현에 어려움을 배로 겪을 것이 눈에 훤했다.그래서 구현할 것들이 얼마 없고, 제일 몰입감있게 플레이할 수 있는 FPS 전투 형식을 채용했다.상세 장르는 수업시간에 ..
[Side Project] Project KS 개발일지
[Side Project] Project KS 개발일지
Side Project
2024.09.09 22:09
전에 만들었던 Project RM을 만들래에서 주최한 10분콘에 냈었는데, 사실 또 하나 더 냈다..이 프로젝트가 10분콘을 노리고 만든 게임이고, 일주일만에 엄청난 성과를 이뤄낸 플젝이기도 했다.다른 프로젝트를 같이하고있는 선배와 동기들로 구성된 4명 팀이었고, 여기에서 나는 기획, 서브 개발, 아트, 사운드의 역할로써 참여했다. (또 다함) (그 선배는 바로 건호형)게임 기획또 같이 프로젝트를 하는 선배에게는 꿈이 하나 있었다... 바로 네크로맨서가 주인공인 게임을 만드는 것이다.그래서 초기 기획을 할 때 여러 컨셉들과 함께 네크로맨서가 주인공인 기획을 하나 만들어두었다.그리고 기획을 선배에게 주자마자 빛의 속도로 네크로맨서 기획이 선정되었다. ㅋㅋㅋㅋ 이제 그 기획을 간단히 설명하자면, 네크로맨싱 ..
완전 기초 블렌더
[#11] 완전 기초부터 시작하는 블렌더
[#11] 완전 기초부터 시작하는 블렌더
블렌더
2024.01.14 15:53
1. 렌더링 방법 블렌더가 렌더링을 하는 방법은 두가지가 있다. Cycles : 렌더링 속도가 느린 대신 결과물의 퀄리티가 뛰어나다. EEVEE : 렌더링 속도가 거의 실시간 급이지만 빛과 그림자 표현이 투박하고 퀄리티가 Cycles보다 떨어지는 감이 있다. 그래서, EEVEE를 사용하여 씬에서 렌더링 되는 것을 보고, Cycles를 사용해 최종 렌더링을 하는것이 효율적이다. 2. Lighting 특정 부분에 광원을 만드는 작업이다. 우측 탭에 지구 모양을 클릭하면, 블렌더에 전반적으로 적용되는 월드 조명을 선택할 수 있다. 기본값은 1로 설정되어있는데, 공기는 발광하지 않으니 0으로 설정해준다. 그리고, Light의 종류는 네가지가 있다. 우측 탭의 전구 모양을 클릭하면 전구의 종류와 색상, 밝기를 조..
[#10] 완전 기초부터 시작하는 블렌더
[#10] 완전 기초부터 시작하는 블렌더
블렌더
2024.01.14 15:09
1. Texture Paint Texture Paint는 질감 표현을 손으로 직접 그리게 해 주는 기능이다. Shader Editor를 불러온 후, Image Texture를 하나 생성해 Base Color와 연결해준다. 그 후에 New 버튼을 눌러 새로운 이미지를 생성한다. 그렇게 생성한 것을 불러온 후, 오브젝트를 선택하고 U키를 눌러 Unwrap을 해준다. 그렇게 되면 Image Editor 탭에 전개도가 생긴다. 그 위에 브러쉬로 색을 입히면, 전개도에 칠해진대로 오브젝트에 적용된다. 그리고 이런 이미지는 저장해주어야 제대로 저장되므로, Alt + S를 눌러 저장해준다.우측 창의 스패너모양을 누르면 브러쉬 설정이 가능하고, Texture Mask를 적용하면 만들어둔 텍스쳐를 불러와 그 질감대로 칠..
[#9] 완전 기초부터 시작하는 블렌더
[#9] 완전 기초부터 시작하는 블렌더
블렌더
2024.01.14 14:17
1. 오브젝트 만들기 1-1. 초콜릿 Cube 오브젝트를 하나 생성해서, 납작하게 만들어 초콜릿모양으로 만들었다. Array Modifier (배열) 특정 방향으로 오브젝트를 복사해주는 것이다. 이것을 이용해 초콜릿 패턴을 만들었다. 1-2. 빵 UV Sphere를 하나 생성한 후, 반을 날려 반 구로 만들었다. 그 후, Subdivision Surface를 적용해 부드럽게 해주었고, Loop cut을 조절해 펑퍼짐한 느낌을 주었다. Proportional Editing 뷰포트의 상단에, 동그라미가 여러개 있는 표시가 있는데, 그걸 누르면 Proportional Editing을 활성화할 수 있다. 그리고 점을 하나 잡고 움직여보면, 근처에 있는 것들도 같이 따라와 자연스럽게 늘리고 줄일 수 있다. 이것을..
[#8] 완전 기초부터 시작하는 블렌더
[#8] 완전 기초부터 시작하는 블렌더
블렌더
2024.01.14 13:17
1. PBR Texture (Physically Based Redering) 1-1. PBR Texture란? 2D 면의 형태를 띈 물체를 입체감이 있게 재질을 표현하는 것이다. 이것을 사용하기 위해서는 외부 사이트에서 PBR Texture를 다운받아야 한다. ambientCG 바로가기 텍스쳐를 다운받을 때에는 .png 파일로 다운받는 것이 제일 적절하다. 화질도 설정할 수 있는데, 8K 화질은 1기가 가까이 돼서 4K로 다운받았다. Color.png는 색상에 관한 정보를 담고 있고, Roughness.png 재질의 거친 정도를 표현할 때 사용된다. Normal~~.png는 요철, 즉, 재질의 높이에 대한 정보를 담고 있다. Displacement.png는 높이에대한 정보를 담고 있는데, 이것은 Mesh..
[#7] 완전 기초부터 시작하는 블렌더
[#7] 완전 기초부터 시작하는 블렌더
블렌더
2024.01.13 23:11
1. 오브젝트 Scale 조정 N키를 누르면 Viewport 오른쪽에 메뉴가 생긴다. 여기서 오브젝트를 선택하면 Item 탭이 생기는데, 여기서 Dimensions에 오브젝트의 크기가 미터단위로 나와있다. 따라서 이걸 보며 오브젝트의 크기를 조정해주어야 한다. 나의 경우는 컵의 크기가 3미터가 넘어가서, Z축이 0.1미터가 되도록 줄여주었다. 2. 바닥 생성 후 오브젝트 놓기 Plain을 생성 후, 컵과 접시를 이 위에 놓아주어야 한다. 뷰포트 상단에 있는 자석아이콘을 누르면, 오브젝트의 움직임이 1미터 단위로 보정되어서 움직여진다. 자석 옆에 있는 아이콘을 누르면, 몇가지 옵션이 뜨는데 초기값은 Increment이다. 이것을 Face로 바꾼 후 컵과 접시를 Plain 위에서 움직이면 Plain에 딱 붙..
[#6] 완전 기초부터 시작하는 블렌더
[#6] 완전 기초부터 시작하는 블렌더
블렌더
2024.01.13 21:52
숙제로 했던 접시 만들기는 거의 자유 주제라 풀이에 어긋나지 않아 생략하였다. 1. Modifier 뷰포트 오른쪽에 있는 창에서 아래 있는 것이 Properties 탭이고, 거기서 스패너 모양의 버튼을 누르면 Modifier를 제어할 수 있다. 우선, 컵에 Subdivison Surface라는 Modifier를 적용했다. Subdivision Surface에 두 속성이 있다. Levels Viewport : 이 Modifier를 적용하는 정도 Render : Viewport에서는 적용되지 않고, 렌더링할 경우에 적용되는 Modifier의 정도 보통 이 두 값을 같게 둔다. 하지만, 컵이 더 부드러워야한다...! 그렇다고 Levels Viewport값을 크게주면 안된다. 블렌더가 하얗게 질려버린다. Lev..
[#5] 완전 기초부터 시작하는 블렌더
[#5] 완전 기초부터 시작하는 블렌더
블렌더
2024.01.13 21:09
이번 강의부터는 본격적인 모델링 작업에 들어갈 것이다. 1. 레퍼런스 이미지 생성 만들 물체의 적절한 이미지를 찾은 후, Shift + A를 눌러 오브젝트 생성 탭으로 들어간다. 그 후, Image > Reference를 눌러 저장해둔 이미지를 불러온다. 그러면 이렇게 레퍼런스 이미지가 불러와진다. 2. 모델링 2-1. 둥글게 표현 모델링하려는 머그컵은 아래로 갈수록 둥글게 좁아지는 형태를 띄고 있다. 그래서 밑면을 줄여주었는데, 이대로는 그냥 직선으로 떨어지는 머그컵이 되어버린다. 그래서 Loop cut을 이용해 편집점을 추가해주어야 한다. Loop cut에 들어가서, 노란 선이 나올 때, 휠을 굴리거나 숫자를 입력하여 Loop cut의 개수를 지정할 수 있다. 이상태로 생성된 편집점을 조절해 머그컵과..
[#4] 완전 기초부터 시작하는 블렌더
[#4] 완전 기초부터 시작하는 블렌더
블렌더
2024.01.13 18:56
1. L-I-E L-I-E는 Object Mode의 G-R-S와 같이 Edit Mode의 주요 기능 세개를 묶은 것이다. 1-1. Loop cut Loop cut은 오브젝트를 고리모양으로 자르는 기능이다. Edit Mode에 진입한 후, Ctrl + R을 누르면 Loop cut에 진입하고, 그 상태에서 마우스를 오브젝트 모서리에 가져다 대면 노란색 선이 생긴다. 이상태로 좌클릭을 하게 되면 노란색 선이 주황색으로 바뀌고, 그 선이 마우스를 따라 움직여 Loop cut을 어디에 할지 정할 수 있다. 이 때 좌클릭을 누르면 주황색 선이 있는 곳에 Loop cut이 생기고, 우클릭을 누르면 정가운데에 생긴다. Loop cut을 실행한 후에는 점과 선만 생기고 아무일도 안일어나는데, 이것이 핵심 기능이다. Lo..
[#3] 완전 기초부터 시작하는 블렌더
[#3] 완전 기초부터 시작하는 블렌더
블렌더
2024.01.13 17:17
1. 숙제 풀이 저번 강의에서 받았던 숙제의 풀이를 보며 고칠 것, 몰랐던 것들을 적어보았다. 1-1. 오브젝트를 기준으로 회전 특정 오브젝트를 편집할 때 시점을 돌리면 그냥 돌려져서 오브젝트를 다시 찾아야하는 불편함이 있었는데, 키패드의 .키를 누르면 해당 오브젝트를 줌 인해서 볼 수 있고, 시점이 회전되는 기준점또한 오브젝트에 맞춰진다. 1-2. 특정 각도로 오브젝트 회전 오브젝트 (특히 저번 숙제에서의 고드름모양)를 회전할 때, R키를 누른 후 회전하면 정확한 각도를 맞출 수 없다. 이 때, R키를 누른 후 키보드로 회전시킬 각도를 입력하면 그 각도만큼 오브젝트가 회전된다. 숙제에서 45도로 회전된 상자를 그냥 눈대중으로 45도쯤 회전시켜 완성했었는데, 이걸 쓰면 쉬울 것 같다. 1-3. 오브젝트 ..
[#2] 완전 기초부터 시작하는 블렌더
[#2] 완전 기초부터 시작하는 블렌더
블렌더
2024.01.13 14:11
1. Object Mode Object Mode는 오브젝트 자체를 다루는 모드 (하나의 고체로 보는 모드)이고, 이와 반대되는 모드로 Edit Mode(다음 강의)가 있는데 이는 오브젝트의 요소 (점, 선, 면)을 다루는 모드이다. 1-1. 요소 선택 좌클릭으로 요소를 선택하고, A키를 눌러 Viewport에 있는 모든 오브젝트를 선택할 수 있다. A키를 두번 빠르게 누르면 전체선택을 해제할 수 있다. 1-2. G-R-S Grab : 오브젝트 이동 오브젝트를 선택하고 G키를 누르면 마우스 커서 모양이 바뀌면서 오브젝트가 마우스를 따라 움직인다. 좌클릭을 하여 변경사항을 저장할 수 있고, 우클릭을 눌러 취소할 수 있다. Rotate : 오브젝트 회전 오브젝트를 선택하고 R키를 누르면 마우스 커서 모양이 바..
[#1] 완전 기초부터 시작하는 블렌더
[#1] 완전 기초부터 시작하는 블렌더
블렌더
2024.01.13 12:10
3D 모델링의 필요성을 느껴서, 블렌더를 시작해보기로 했다. 1. 블렌더 설치 블렌더 공식 사이트로 가서 블렌더 최신버전을 다운로드 한다. 따로 설정해줄 것은 없고, 그냥 설치하면 된다. 언어 설정은 영어로 진행한다. 2. Viewport 블렌더를 처음 실행하면 나오는 그리드가 쳐진 회색 화면을 Viewport라고 한다. 마우스 휠 클릭을 한 후 움직이면 원하는 각도에서 물체를 볼 수 있다. Shift + 휠 클릭으로 시점 고정 후 평행이동을 할 수 있다. 물론 줌 인 / 아웃 기능은 휠을 굴리면 된다. 그리고 특정 시점 (위나 옆 같은)에서 보게 할 수도 있는데, 이게 키보드의 키패드로 이루어진다. 하지만 내가 쓰고 있는 키보드 두개 모두 키패드가 없다. 어어... 그럼 못하는거예요...? 할 수 있다..
알고리즘
[BOJ] 25585번 - 86 ─에이티식스─ 1
[BOJ] 25585번 - 86 ─에이티식스─ 1
알고리즘
2025.09.19 04:46
문제산마그놀리아 공화국은 '레기온'이라는 인공지능 무인 병기들과 전쟁 중이다. 공화국은 레기온에 대항할 수단으로 '저거노트'라는 보행 병기를 개발했다. 공화국 군인들은 이 저거노트에 탑승해서 레기온에 맞서 싸운다.신에이 노우젠은 동부전선 제1전대의 전대장이자 근접전의 대가이다. 그는 레기온들의 위치를 전부 파악할 수 있는 이능력이 있다. 그의 전투 스타일은 직접 레기온이 있는 위치로 도약해서 빠르게 해치우는 것이다. 저거노트는 화력이 다소 약하지만, 기동성이 뛰어나다는 장점이 있기 때문이다.저거노트는 대각선 네 방향으로 이동할 수 있다. 현재 좌표가 (r,c) 라면 (r - 1,c - 1), (r - 1,c + 1), (r + 1,c - 1), (r + 1,c + 1)로 움직일 수 있다. 저거노트가 한 ..
[BOJ] 1393번 - 음하철도 구구팔
[BOJ] 1393번 - 음하철도 구구팔
알고리즘
2025.09.18 03:48
문제최백준은 음하철도 구구팔에 탔다.문제는 구구팔의 기장인 조교 김재홍이 반쯤 미쳐서 열차를 멈추지 않는다는 것이다. 그래서 최백준은 달리고 있는 열차에서 뛰어내려야 한다.그런데 뛰어내릴 때 정류장 까지 거리가 너무 멀면 마이 아플 수 있다.그래서 철도가 정류장에 가장 많이 근접했을 때 뛰어내리고자 한다.어디서 뛰어내려야 하는가?입력첫번째 줄에는 xs와 ys가 주어진다. 이는 정류장의 위치가 (xs, ys)임을 의미한다.두번째 줄에는 xe, ye, dx, dy가 주어진다. 이는 현재 열차 위치가 (xe, ye)이고, 열차가 1초마다 x가 증가하는 방향으로 dx만큼, y가 증가하는 방향으로 dy만큼 이동함을 의미한다주어지는 모든 수는 -100이상, 100이하의 정수이다.출력 최백준이 뛰어내릴 위치의 x좌표..
[BOJ] 1049번 - 기타줄
[BOJ] 1049번 - 기타줄
알고리즘
2025.09.18 02:35
문제Day Of Mourning의 기타리스트 강토가 사용하는 기타에서 N개의 줄이 끊어졌다. 따라서 새로운 줄을 사거나 교체해야 한다. 강토는 되도록이면 돈을 적게 쓰려고 한다. 6줄 패키지를 살 수도 있고, 1개 또는 그 이상의 줄을 낱개로 살 수도 있다.끊어진 기타줄의 개수 N과 기타줄 브랜드 M개가 주어지고, 각각의 브랜드에서 파는 기타줄 6개가 들어있는 패키지의 가격, 낱개로 살 때의 가격이 주어질 때, 적어도 N개를 사기 위해 필요한 돈의 수를 최소로 하는 프로그램을 작성하시오.입력 첫째 줄에 N과 M이 주어진다. N은 100보다 작거나 같은 자연수이고, M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 M개의 줄에는 각 브랜드의 패키지 가격과 낱개의 가격이 공백으로 구분하여 주어진다. 가격은..
[BOJ] 1011번 - Fly me to the Alpha Centauri
[BOJ] 1011번 - Fly me to the Alpha Centauri
알고리즘
2025.09.18 00:28
문제우현이는 어린 시절, 지구 외의 다른 행성에서도 인류들이 살아갈 수 있는 미래가 오리라 믿었다. 그리고 그가 지구라는 세상에 발을 내려 놓은 지 23년이 지난 지금, 세계 최연소 ASNA 우주 비행사가 되어 새로운 세계에 발을 내려 놓는 영광의 순간을 기다리고 있다.그가 탑승하게 될 우주선은 Alpha Centauri라는 새로운 인류의 보금자리를 개척하기 위한 대규모 생활 유지 시스템을 탑재하고 있기 때문에, 그 크기와 질량이 엄청난 이유로 최신기술력을 총 동원하여 개발한 공간이동 장치를 탑재하였다. 하지만 이 공간이동 장치는 이동 거리를 급격하게 늘릴 경우 기계에 심각한 결함이 발생하는 단점이 있어서, 이전 작동시기에 k광년을 이동하였을 때는 k-1 , k 혹은 k+1 광년만을 다시 이동할 수 있다..
[BOJ] 2253번 - 점프
[BOJ] 2253번 - 점프
알고리즘
2025.09.17 02:45
문제N(2 ≤ N ≤ 10,000)개의 돌들이 같은 간격으로 놓여 있다. 편의상 순서대로 1, 2, …, N번 돌이라고 부르자. 당신은 현재 1번 돌 위에 있는데, 이 돌들 사이에서 점프를 하면서 N번째 돌로 이동을 하려 한다. 이때 다음 조건들이 만족되어야 한다.이동은 앞으로만 할 수 있다. 즉, 돌 번호가 증가하는 순서대로만 할 수 있다.제일 처음에 점프를 할 때에는 한 칸밖에 점프하지 못한다. 즉, 1번 돌에서 2번 돌이 있는 곳으로 점프할 수 있다. 그 다음부터는 가속/감속 점프를 할 수 있는데, 이전에 x칸 점프를 했다면, 다음번에는 속도를 줄여 x-1칸 점프하거나, x칸 점프하거나, 속도를 붙여 x+1칸 점프를 할 수 있다. 물론 점프를 할 때에는 한 칸 이상씩 해야 한다.각 돌들은 각기 그 ..
[BOJ] 12842번 - 튀김 소보루
[BOJ] 12842번 - 튀김 소보루
알고리즘
2025.09.15 10:43
문제영선이는 대전에 내려갔다 서울 오는 길에 튀김 소보루 n개를 사왔다. (1 ≤ n ≤ 100,000)영선이가 SCCC 회원들에게 나누어 주기 위하여 001에 두고 잠깐 나갔다 온 사이에 온전한 튀김 소보루는 s개가 남아 있었다.(먹기 위해 집어 든 튀김소보루는 제외한다)영선이가 자리를 비운 동안 001에는 m명이 있었고, 각 사람은 1부터 m번까지 번호가 매겨져 있다. 영선이는 평소에 SCCC 회원들과 식사를 자주해서 식사 속도를 알고 있다. 이를 바탕으로 튀김 소보루 1개를 먹는데 걸리는 시간을 유추할 수 있다.영선이를 위해 이 정보들을 바탕으로 마지막으로 튀김 소보루를 집어 든 사람의 번호를 구하여라.여러 사람이 동시에 소보루를 집는다면 번호가 작은 사람이 먼저 잡으며, 영선이가 떠나자 마자 바로..
[BOJ] 31247번 - 2024는 무엇이 특별할까?
[BOJ] 31247번 - 2024는 무엇이 특별할까?
알고리즘
2025.09.15 09:14
문제백준 온라인 저지의 신년대회 Hello, BOJ 2024!의 개최일은 2024년 1월 14일이다. 정휘는 대회가 개최된다는 사실이 기뻐 제목을 뚫어져라 보다가 2024가 무언가 특별하다는 사실을 깨달았다.그렇다. τo(n)을 n의 약수이면서 홀수인 양의 정수의 개수, τe(n)을 n의 약수이면서 짝수인 양의 정수의 개수라고 할 때, τe(2024)=3τo(2024)을 만족한다. 다음에 이런 연도가 오려면 16년 뒤인 2040년이 되어야 한다. τe(x)=K×τo(x)를 만족하는 양의 정수 x를 K-특별한 수라고 정의하자. 양의 정수 N과 음이 아닌 정수 K가 주어진다. N 이하의 양의 정수 중 K-특별한 수의 개수를 출력하는 프로그램을 작성하시오.입력첫째 줄에 테스트 케이스의 개수 T가 주어진다.이후..
[BOJ] 18113번 - 그르다 김가놈
[BOJ] 18113번 - 그르다 김가놈
알고리즘
2025.09.15 09:03
문제정래는 김밥가게 “그르다 김가놈”에 납품할 김밥을 만드는 김밥 공장을 운영한다. 정래는 김밥 양쪽 끝을 “꼬다리”라고 부른다. 그리고 꼬다리를 잘라낸 김밥을 “손질된 김밥”이라고 부른다. 공장에서는 김밥 N개에 대해서, 김밥 꼬다리를 잘라내고 손질된 김밥을 김밥조각으로 만드는 작업을 한다. 꼬다리를 잘라낼 때에는 양쪽에서 균일하게 K cm만큼 잘라낸다. 만약 김밥의 길이가 2K cm보다 짧아서 한쪽밖에 자르지 못한다면, 한쪽만 꼬다리를 잘라낸다. 김밥 길이가 K cm이거나 그보다 짧으면 그 김밥은 폐기한다.손질된 김밥들은 모두 일정한 길이 P로 잘라서 P cm의 김밥조각들로 만든다. P는 양의 정수여야 한다. 정래는 일정한 길이 P cm로 자른 김밥조각을 최소 M개 만들고 싶다. P를 최대한 길게 하..
[BOJ] 1072번 - 게임
[BOJ] 1072번 - 게임
알고리즘
2025.09.15 08:16
문제김형택은 지금 몰래 Spider Solitaire(스파이더 카드놀이)를 하고 있다. 형택이는 이 게임을 이길 때도 있었지만, 질 때도 있었다. 누군가의 시선이 느껴진 형택이는 게임을 중단하고 코딩을 하기 시작했다. 의심을 피했다고 생각한 형택이는 다시 게임을 켰다. 그 때 형택이는 잠시 코딩을 하는 사이에 자신의 게임 실력이 눈에 띄게 향상된 것을 알았다.이제 형택이는 앞으로의 모든 게임에서 지지 않는다. 하지만, 형택이는 게임 기록을 삭제 할 수 없기 때문에, 자신의 못하던 예전 기록이 현재 자신의 엄청난 실력을 증명하지 못한다고 생각했다.게임 기록은 다음과 같이 생겼다.게임 횟수 : X이긴 게임 : Y (Z%)Z는 형택이의 승률이고, 소수점은 버린다. 예를 들어, X=53, Y=47이라면, Z=8..
[BOJ] 11004번 - K번째 수
[BOJ] 11004번 - K번째 수
알고리즘
2025.09.15 08:06
문제 수 N개 A1, A2, ..., AN이 주어진다. A를 오름차순 정렬했을 때, 앞에서부터 K번째 있는 수를 구하는 프로그램을 작성하시오. 입력- 첫째 줄에 N(1 ≤ N ≤ 5,000,000)과 K (1 ≤ K ≤ N)이 주어진다.- 둘째에는 A1, A2, ..., AN이 주어진다. (-10^9 ≤ Ai ≤ 10^9)출력- A를 정렬했을 때, 앞에서부터 K번째 있는 수를 출력한다. 문제 접근처음에는 힙을 써서 가장 왼쪽부터 (가장 작은 값) 찾아보는 방식을 사용했으나, 오래걸렸다.그래서 C++의 내장 sort() 함수를 써보았다.풀이#include #include using namespace std;long long int arr[5000000];int main() { ios_base::syn..
전체 글
[BOJ] 25585번 - 86 ─에이티식스─ 1
알고리즘2025.09.19 04:46[BOJ] 25585번 - 86 ─에이티식스─ 1

문제산마그놀리아 공화국은 '레기온'이라는 인공지능 무인 병기들과 전쟁 중이다. 공화국은 레기온에 대항할 수단으로 '저거노트'라는 보행 병기를 개발했다. 공화국 군인들은 이 저거노트에 탑승해서 레기온에 맞서 싸운다.신에이 노우젠은 동부전선 제1전대의 전대장이자 근접전의 대가이다. 그는 레기온들의 위치를 전부 파악할 수 있는 이능력이 있다. 그의 전투 스타일은 직접 레기온이 있는 위치로 도약해서 빠르게 해치우는 것이다. 저거노트는 화력이 다소 약하지만, 기동성이 뛰어나다는 장점이 있기 때문이다.저거노트는 대각선 네 방향으로 이동할 수 있다. 현재 좌표가 (r,c) 라면 (r - 1,c - 1), (r - 1,c + 1), (r + 1,c - 1), (r + 1,c + 1)로 움직일 수 있다. 저거노트가 한 ..

[BOJ] 1393번 - 음하철도 구구팔
알고리즘2025.09.18 03:48[BOJ] 1393번 - 음하철도 구구팔

문제최백준은 음하철도 구구팔에 탔다.문제는 구구팔의 기장인 조교 김재홍이 반쯤 미쳐서 열차를 멈추지 않는다는 것이다. 그래서 최백준은 달리고 있는 열차에서 뛰어내려야 한다.그런데 뛰어내릴 때 정류장 까지 거리가 너무 멀면 마이 아플 수 있다.그래서 철도가 정류장에 가장 많이 근접했을 때 뛰어내리고자 한다.어디서 뛰어내려야 하는가?입력첫번째 줄에는 xs와 ys가 주어진다. 이는 정류장의 위치가 (xs, ys)임을 의미한다.두번째 줄에는 xe, ye, dx, dy가 주어진다. 이는 현재 열차 위치가 (xe, ye)이고, 열차가 1초마다 x가 증가하는 방향으로 dx만큼, y가 증가하는 방향으로 dy만큼 이동함을 의미한다주어지는 모든 수는 -100이상, 100이하의 정수이다.출력 최백준이 뛰어내릴 위치의 x좌표..

[BOJ] 1049번 - 기타줄
알고리즘2025.09.18 02:35[BOJ] 1049번 - 기타줄

문제Day Of Mourning의 기타리스트 강토가 사용하는 기타에서 N개의 줄이 끊어졌다. 따라서 새로운 줄을 사거나 교체해야 한다. 강토는 되도록이면 돈을 적게 쓰려고 한다. 6줄 패키지를 살 수도 있고, 1개 또는 그 이상의 줄을 낱개로 살 수도 있다.끊어진 기타줄의 개수 N과 기타줄 브랜드 M개가 주어지고, 각각의 브랜드에서 파는 기타줄 6개가 들어있는 패키지의 가격, 낱개로 살 때의 가격이 주어질 때, 적어도 N개를 사기 위해 필요한 돈의 수를 최소로 하는 프로그램을 작성하시오.입력 첫째 줄에 N과 M이 주어진다. N은 100보다 작거나 같은 자연수이고, M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 M개의 줄에는 각 브랜드의 패키지 가격과 낱개의 가격이 공백으로 구분하여 주어진다. 가격은..

[BOJ] 1011번 - Fly me to the Alpha Centauri
알고리즘2025.09.18 00:28[BOJ] 1011번 - Fly me to the Alpha Centauri

문제우현이는 어린 시절, 지구 외의 다른 행성에서도 인류들이 살아갈 수 있는 미래가 오리라 믿었다. 그리고 그가 지구라는 세상에 발을 내려 놓은 지 23년이 지난 지금, 세계 최연소 ASNA 우주 비행사가 되어 새로운 세계에 발을 내려 놓는 영광의 순간을 기다리고 있다.그가 탑승하게 될 우주선은 Alpha Centauri라는 새로운 인류의 보금자리를 개척하기 위한 대규모 생활 유지 시스템을 탑재하고 있기 때문에, 그 크기와 질량이 엄청난 이유로 최신기술력을 총 동원하여 개발한 공간이동 장치를 탑재하였다. 하지만 이 공간이동 장치는 이동 거리를 급격하게 늘릴 경우 기계에 심각한 결함이 발생하는 단점이 있어서, 이전 작동시기에 k광년을 이동하였을 때는 k-1 , k 혹은 k+1 광년만을 다시 이동할 수 있다..

[BOJ] 2253번 - 점프
알고리즘2025.09.17 02:45[BOJ] 2253번 - 점프

문제N(2 ≤ N ≤ 10,000)개의 돌들이 같은 간격으로 놓여 있다. 편의상 순서대로 1, 2, …, N번 돌이라고 부르자. 당신은 현재 1번 돌 위에 있는데, 이 돌들 사이에서 점프를 하면서 N번째 돌로 이동을 하려 한다. 이때 다음 조건들이 만족되어야 한다.이동은 앞으로만 할 수 있다. 즉, 돌 번호가 증가하는 순서대로만 할 수 있다.제일 처음에 점프를 할 때에는 한 칸밖에 점프하지 못한다. 즉, 1번 돌에서 2번 돌이 있는 곳으로 점프할 수 있다. 그 다음부터는 가속/감속 점프를 할 수 있는데, 이전에 x칸 점프를 했다면, 다음번에는 속도를 줄여 x-1칸 점프하거나, x칸 점프하거나, 속도를 붙여 x+1칸 점프를 할 수 있다. 물론 점프를 할 때에는 한 칸 이상씩 해야 한다.각 돌들은 각기 그 ..

image