문제 설명 이번 추석에도 시스템 장애가 없는 명절을 보내고 싶은 어피치는 서버를 증설해야 할지 고민이다. 장애 대비용 서버 증설 여부를 결정하기 위해 작년 추석 기간인 9월 15일 로그 데이터를 분석한 후 초당 최대 처리량을 계산해보기로 했다. 초당 최대 처리량은 요청의 응답 완료 여부에 관계없이 임의 시간부터 1초(=1,000밀리초)간 처리하는 요청의 최대 개수를 의미한다. 제한 사항 solution 함수에 전달되는 lines 배열은 N(1 ≦ N ≦ 2,000)개의 로그 문자열로 되어 있으며, 각 로그 문자열마다 요청에 대한 응답완료시간 S와 처리시간 T가 공백으로 구분되어 있다. 응답완료시간 S는 작년 추석인 2016년 9월 15일만 포함하여 고정 길이 2016-09-15 hh:mm:ss.sss 형..
분류 전체보기
GAS GAS는 복잡한 기존 시스템을 몇 가지 구성요소로 분리하면서 자유도와 재활용성을 올리는 프레임 워크이다. GAS의 주요 구성요소는 다음과 같다. ASC (AbilitySystemComponent) 액터에 부착해 GAS 시스템을 동작시키는 컴포넌트이다. 컴퓨터로 따지자면 CPU 같은 존재이다. ASC에는 다양한 요소와 함수들이 내장되어 있다. 그중, 자주 사용되는 몇 가지 함수들은 다음과 같다. //ASC의 ActorInfo를 초기화하는 함수 virtual void InitAbilityActorInfo(AActor* InOwnerActor, AActor* InAvatarActor); //등록되어 있는 AttributeSet을 받아오는 함수 template const T*GetSet() const {..
문제 설명 회사원 Demi는 가끔은 야근을 하는데요, 야근을 하면 야근 피로도가 쌓입니다. 야근 피로도는 야근을 시작한 시점에서 남은 일의 작업량을 제곱하여 더한 값입니다. Demi는 N시간 동안 야근 피로도를 최소화하도록 일할 겁니다.Demi가 1시간 동안 작업량 1만큼을 처리할 수 있다고 할 때, 퇴근까지 남은 N 시간과 각 일에 대한 작업량 works에 대해 야근 피로도를 최소화한 값을 리턴하는 함수 solution을 완성해주세요. 제한 사항 works는 길이 1 이상, 20,000 이하인 배열입니다. works의 원소는 50000 이하인 자연수입니다. n은 1,000,000 이하인 자연수입니다. 풀이 주어진 작업들을 n만큼 뺀 뒤 각 작업 소요일을 제곱한 값을 최소화하는 문제이다. n개의 수를 빼..
프로그래머스[Lv.3] - 최적의 행렬 곱셈 문제 설명 사칙연산에서 더하기(+)는 결합법칙이 성립하지만, 빼기(-)는 결합법칙이 성립하지 않습니다. 예를 들어 식 1 - 5 - 3은 연산 순서에 따라 다음과 같이 다른 결과를 가집니다. ((1 - 5) - 3) = -7 (1 - (5 - 3)) = -1 위 예시와 같이 뺄셈은 연산 순서에 따라 그 결과가 바뀔 수 있습니다. 또 다른 예로 식 1 - 3 + 5 - 8은 연산 순서에 따라 다음과 같이 5가지 결과가 나옵니다. (((1 - 3) + 5) - 8) = -5 ((1 - (3 + 5)) - 8) = -15 (1 - ((3 + 5) - 8)) = 1 (1 - (3 + (5 - 8))) = 1 ((1 - 3) + (5 - 8)) = -5 위와 같이 서로..
광역 공격 & Cost & Cooldown GAS에 대한 마지막 포스팅이다. 지금까지 언급한 GAS 클래스들을 이용하여 광역 공격 스킬을 구현하고 해당 스킬을 사용하는데 필요한 코스트와 해당 스킬에 쿨다운을 걸 수 있는 방법을 구현할 것이다. 기본적인 흐름은 다음과 같다. 캐릭터가 무기를 획득하면 스킬을 사용할 수 있는 GA를 부여한다. 마우스 우클릭 입력을 추가하고 해당 입력이 들어오면 앞서 부여했던 스킬 GA를 실행한다. GA에서는 스킬 애니메이션을 실행할 AT를 생성한 뒤 실행 요청을 한다. Montage를 통해 애니메이션이 실행되면 Event와 태그를 통해 공격 판정 GA를 실행한다. 공격 판정 GA는 스킬에 적중한 액터를 판별할 AT를 생성한 뒤 실행 요청을 한다. 판정 AT에서는 TA를 만들어..
문제 설명 크기가 a by b인 행렬과 크기가 b by c 인 행렬이 있을 때, 두 행렬을 곱하기 위해서는 총 a x b x c 번 곱셈해야합니다. 예를 들어서 크기가 5 by 3인 행렬과 크기가 3 by 2인 행렬을 곱할때는 총 5 x 3 x 2 = 30번의 곱하기 연산을 해야 합니다. 행렬이 2개일 때는 연산 횟수가 일정 하지만, 행렬의 개수가 3개 이상일 때는 연산의 순서에 따라서 곱하기 연산의 횟수가 바뀔 수 있습니다. 예를 들어서 크기가 5 by 3인 행렬 A, 크기가 3 by 10인 행렬 B, 크기가 10 by 6인 행렬 C가 있을 때, 순서대로 A와 B를 먼저 곱하고, 그 결과에 C를 곱하면 A와 B행렬을 곱할 때 150번을, AB 에 C를 곱할 때 300번을 연산을 해서 총 450번의 곱하..
문제 설명 카카오에서는 무료 셔틀버스를 운행하기 때문에 판교역에서 편하게 사무실로 올 수 있다. 카카오의 직원은 서로를 '크루'라고 부르는데, 아침마다 많은 크루들이 이 셔틀을 이용하여 출근한다. 이 문제에서는 편의를 위해 셔틀은 다음과 같은 규칙으로 운행한다고 가정하자. 셔틀은 09:00부터 총 n회 t분 간격으로 역에 도착하며, 하나의 셔틀에는 최대 m명의 승객이 탈 수 있다. 셔틀은 도착했을 때 도착한 순간에 대기열에 선 크루까지 포함해서 대기 순서대로 태우고 바로 출발한다. 예를 들어 09:00에 도착한 셔틀은 자리가 있다면 09:00에 줄을 선 크루도 탈 수 있다. 일찍 나와서 셔틀을 기다리는 것이 귀찮았던 콘은, 일주일간의 집요한 관찰 끝에 어떤 크루가 몇 시에 셔틀 대기열에 도착하는지 알아냈..
GameplayCue GameplayCue를 이용하여 VFX를 적용하는 방법에 대해 알아보자. GameplayCue(GC)는 시각 이펙트나 사운드 같은 게임 로직과는 관련이 없는 부가적인 기능을 담당한다. GC에는 두 가지 종류가 있다. 스태틱 게임플레이 큐: 일시적으로 발생하는 특수효과에 사용, Excute 이벤트 발동 액터 게임플레이 큐: 일정 기간동안 발생하는 특수효과에 사용, Add/Remove 이벤트 발동 C++로도 구현할 수 있지만 BP로 구현하는 것이 생산적이다. 또한, GE에서 GC와 연동할 수 있도록 기능을 제공하고 있다. 다른 GAS객체들과는 다르게 GC는 GameplayCueManager가 관리한다. 부가적인 기능이라 그런 것 같다. 또한, GC는 GameplayTag를 통해 간단하게..
문제 설명 전무로 승진한 라이언은 기분이 너무 좋아 프렌즈를 이끌고 특별 휴가를 가기로 했다. 내친김에 여행 계획까지 구상하던 라이언은 재미있는 게임을 생각해냈고 역시 전무로 승진할만한 인재라고 스스로에게 감탄했다. 라이언이 구상한(그리고 아마도 라이언만 즐거울만한) 게임은, 카카오 프렌즈를 두 팀으로 나누고, 각 팀이 같은 곳을 다른 순서로 방문하도록 해서 먼저 순회를 마친 팀이 승리하는 것이다. 그냥 지도를 주고 게임을 시작하면 재미가 덜해지므로, 라이언은 방문할 곳의 2차원 좌표 값을 구하고 각 장소를 이진트리의 노드가 되도록 구성한 후, 순회 방법을 힌트로 주어 각 팀이 스스로 경로를 찾도록 할 계획이다. 라이언은 아래와 같은 특별한 규칙으로 트리 노드들을 구성한다. 트리를 구성하는 모든 노드의 ..
문제 설명 포털 다음에서 검색어 자동완성 기능을 넣고 싶은 라이언은 한 번 입력된 문자열을 학습해서 다음 입력 때 활용하고 싶어 졌다. 예를 들어, go 가 한 번 입력되었다면, 다음 사용자는 g 만 입력해도 go를 추천해주므로 o를 입력할 필요가 없어진다! 단, 학습에 사용된 단어들 중 앞부분이 같은 경우에는 어쩔 수 없이 다른 문자가 나올 때까지 입력을 해야 한다. 효과가 얼마나 좋을지 알고 싶은 라이언은 학습된 단어들을 찾을 때 몇 글자를 입력해야 하는지 궁금해졌다. 예를 들어, 학습된 단어들이 아래와 같을 때 go gone guild go를 찾을 때 go를 모두 입력해야 한다. gone을 찾을 때 gon 까지 입력해야 한다. (gon이 입력되기 전까지는 go 인지 gone인지 확신할 수 없다.) ..