[프로그래머스/C++ 문제 풀이] Lv. 1 - 공원 산책
·
코딩테스트/프로그래머스 (Lv. 1)
문제 설명지나다니는 길을 'O', 장애물을 'X'로 나타낸 직사각형 격자 모양의 공원에서 로봇 강아지가 산책을 하려합니다. 산책은 로봇 강아지에 미리 입력된 명령에 따라 진행하며, 명령은 다음과 같은 형식으로 주어집니다.["방향 거리", "방향 거리" … ]예를 들어 "E 5"는 로봇 강아지가 현재 위치에서 동쪽으로 5칸 이동했다는 의미입니다. 로봇 강아지는 명령을 수행하기 전에 다음 두 가지를 먼저 확인합니다.주어진 방향으로 이동할 때 공원을 벗어나는지 확인합니다.주어진 방향으로 이동 중 장애물을 만나는지 확인합니다.위 두 가지중 어느 하나라도 해당된다면, 로봇 강아지는 해당 명령을 무시하고 다음 명령을 수행합니다.공원의 가로 길이가 W, 세로 길이가 H라고 할 때, 공원의 좌측 상단의 좌표는 (0, ..
[프로그래머스/C++ 문제 풀이] Lv. 1 - 신고 결과 받기
·
코딩테스트/프로그래머스 (Lv. 1)
문제 설명신입사원 무지는 게시판 불량 이용자를 신고하고 처리 결과를 메일로 발송하는 시스템을 개발하려 합니다. 무지가 개발하려는 시스템은 다음과 같습니다.각 유저는 한 번에 한 명의 유저를 신고할 수 있습니다.신고 횟수에 제한은 없습니다. 서로 다른 유저를 계속해서 신고할 수 있습니다.한 유저를 여러 번 신고할 수도 있지만, 동일한 유저에 대한 신고 횟수는 1회로 처리됩니다.k번 이상 신고된 유저는 게시판 이용이 정지되며, 해당 유저를 신고한 모든 유저에게 정지 사실을 메일로 발송합니다.유저가 신고한 모든 내용을 취합하여 마지막에 한꺼번에 게시판 이용 정지를 시키면서 정지 메일을 발송합니다.다음은 전체 유저 목록이 ["muzi", "frodo", "apeach", "neo"]이고, k = 2(즉, 2번 ..
[Unity] Raycast, LayerMask
·
Game Programming/Unity Engine
개요게임을 제작하다 보면 특정 방향에 물체가 있는지 판별해야 하는 경우가 생깁니다. 예를 들어 FPS 장르의 게임에서 총알의 궤적을 계산하거나, RTS 장르의 게임에서 클릭한 지점을 감지하는 등의 상황이 있습니다. 유니티(Unity)에서는 Raycast를 사용하여 특정 방향으로 광선을 쏘아 물체와의 충돌 여부를 감지할 수 있습니다.이번에는 간단히 Raycast를 사용하는 방법에 대해 정리해보도록 하겠습니다. RaycastRaycast는 특정 지점(origin)에서 특정 방향(direction)으로 광선(ray)을 발사하며 해당 광선에 충돌된 물체에 대한 정보를 얻을 수 있는 기술입니다. 유니티(Unity)에서는 Physics.Raycast() 함수를 통해 다음과 같이 사용이 가능합니다.Physics.Ra..
[프로그래머스/C++ 문제 풀이] Lv. 1 - [PCCP 기출문제] 1번 / 붕대 감기
·
코딩테스트/프로그래머스 (Lv. 1)
문제 설명어떤 게임에는 붕대 감기라는 기술이 있습니다.붕대 감기는 t초 동안 붕대를 감으면서 1초마다 x만큼의 체력을 회복합니다. t초 연속으로 붕대를 감는 데 성공한다면 y만큼의 체력을 추가로 회복합니다. 게임 캐릭터에는 최대 체력이 존재해 현재 체력이 최대 체력보다 커지는 것은 불가능합니다.기술을 쓰는 도중 몬스터에게 공격을 당하면 기술이 취소되고, 공격을 당하는 순간에는 체력을 회복할 수 없습니다. 몬스터에게 공격당해 기술이 취소당하거나 기술이 끝나면 그 즉시 붕대 감기를 다시 사용하며, 연속 성공 시간이 0으로 초기화됩니다.몬스터의 공격을 받으면 정해진 피해량만큼 현재 체력이 줄어듭니다. 이때, 현재 체력이 0 이하가 되면 캐릭터가 죽으며 더 이상 체력을 회복할 수 없습니다.당신은 붕대감기 기술의..
[프로그래머스/C++ 문제 풀이] Lv. 1 - 가장 많이 받은 선물
·
코딩테스트/프로그래머스 (Lv. 1)
문제 설명선물을 직접 전하기 힘들 때 카카오톡 선물하기 기능을 이용해 축하 선물을 보낼 수 있습니다. 당신의 친구들이 이번 달까지 선물을 주고받은 기록을 바탕으로 다음 달에 누가 선물을 많이 받을지 예측하려고 합니다.두 사람이 선물을 주고받은 기록이 있다면, 이번 달까지 두 사람 사이에 더 많은 선물을 준 사람이 다음 달에 선물을 하나 받습니다.예를 들어 A가 B에게 선물을 5번 줬고, B가 A에게 선물을 3번 줬다면 다음 달엔 A가 B에게 선물을 하나 받습니다.두 사람이 선물을 주고받은 기록이 하나도 없거나 주고받은 수가 같다면, 선물 지수가 더 큰 사람이 선물 지수가 더 작은 사람에게 선물을 하나 받습니다.선물 지수는 이번 달까지 자신이 친구들에게 준 선물의 수에서 받은 선물의 수를 뺀 값입니다.예를..
[Unity] 오브젝트 이동 방법, Delta Time, 입력 받기
·
Game Programming/Unity Engine
개요유니티(Unity)에서 오브젝트를 이동시키는 방법은 여러 가지가 있습니다.이번에는 Transform 컴포넌트를 사용해 직접 오브젝트를 이동시켜보도록 하며, DeltaTime이 어떤 것이고, 왜 사용해야 하는지에 대해 정리해보도록 하겠습니다.Transform 컴포넌트를 이용한 이동 1모든 게임 오브젝트는 Transform 컴포넌트를 가지고 있습니다. 해당 컴포넌트를 사용해 특정 오브젝트를 이동시켜보도록 하겠습니다. 우선, 직접 position을 설정하는 방법입니다.해당 오브젝트가 게임에 등장함과 동시에 특정 위치로 지정하는 코드는 다음과 같습니다.void Start(){ // 오브젝트의 위치를 (3, 1, 3)으로 지정 transform.position = new Vector3(3.0f, 1..
[Unity] 프리팹(Prefab)
·
Game Programming/Unity Engine
개요언리얼 엔진을 통해 블루프린트 클래스를 생성하여 레벨에 같은 유형의 객체를 여러 개 배치하는 것과 유사하지만 조금은 다른 유니티 엔진의 프리팹(Prefab)에 대해 공부한 내용을 간단하게 정리해보도록 하겠습니다.프리팹(Prefab)이란?프리팹은 Unity에서 특정 게임 오브젝트와 그 구성 요소를 미리 정의해 놓은 템플릿입니다. 게임 오브젝트를 생성, 설정 및 저장할 수 있으며, 해당 게임 오브젝트의 모든 컴포넌트, 프로퍼티 값, 자식 게임 오브젝트를 재사용 가능한 에셋으로 만들 수 있습니다. 프리팹(Prefab) 생성 및 예시프리팹을 생성하는 방법은 매우 간단합니다.Hierarchy 탭에서 위치한 게임 오브젝트를 Project 탭으로 드래그 & 드롭을 하면 생성됩니다. 프리팹을 어떤 상황에 사용하는지..
[프로그래머스/C++ 문제 풀이] Lv. 0 - 직사각형 넓이 구하기
·
코딩테스트/프로그래머스 (Lv. 0)
문제 설명2차원 좌표 평면에 변이 축과 평행한 직사각형이 있습니다. 직사각형 네 꼭짓점의 좌표 [[x1, y1], [x2, y2], [x3, y3], [x4, y4]]가 담겨있는 배열 dots가 매개변수로 주어질 때, 직사각형의 넓이를 return 하도록 solution 함수를 완성해보세요.제한 사항dots의 길이 = 4dots의 원소의 길이 = 2-256  dots[i]의 원소 잘못된 입력은 주어지지 않습니다.입출력 예 dots result [[1, 1], [2, 1], [2, 2], [1, 2]]1[[-1, -1], [1, 1], [1, -1], [-1, 1]]4 입출력 예 #1좌표 [[1, 1], [2, 1], [2, 2], [1, 2]] 를 꼭짓점으로 갖는 직사각형의 가로, 세로 길이는 각각 1..