게임 개발 입문 팀 과제가 마무리됐다.
튜터님들과 매니저님의 공통적인 피드백은 "게임의 흐름을 한 눈에 파악하는 요소"가 부족하다는 것이었다.
"체력이 닳는 벽에 부딪히면 이펙트가 다르게 해주면 좋겠다", "게임 시스템의 이해를 돕는 무언가가 필요하다" 등의 비슷한 피드백을 받았다.
팀 내에서도 한 번 나왔던 문제긴하다. 기존의 슈퍼 헥사곤은 튜토리얼이 필요 없을 정도로 직관적인 게임이었고, 우리가 만든 게임은 설명이 필요한 게임이었기 때문이다.
우리가 만든 게임은 정말 잘 만들었지만 기획 면에서는 [캐주얼 - 비직관 - 설명애매]라는 느낌이었다.
캐주얼이지만 설명이 필요했던 게임이었고, 설명이 필요했지만 설명을 플레이 화면에 둠으로써 캐주얼의 쾌적한 느낌은 내지 못한 모양이었다.
기획이 절반 이상임을 뼈저리게 느낀 오늘이었다.
아래는 내가 작성한 게임의 플로우 차트다.
오늘은 슬렁슬렁 시간 보냈기에 아침에 풀었던 알고리즘 문제를 써볼까한다.
내가 작성한 코드는 이렇게..for문이 3개나 있다.
using System;
public class Solution {
public int solution(int[] number) {
int answer = 0;
for(int i = 0; i < number.Length; ++i)
{
for(int j = i+1; j < number.Length; ++j)
{
for(int k = j+1; k < number.Length; ++k)
{
if(number[i] + number[j] + number[k] == 0)
++answer;
}
}
}
return answer;
}
}
수학 공식을 대입해볼까 했지만 도저히 떠오르질 않았고,, 이 문제는 전체 탐색 문제이다 보니 재귀함수를 사용해주면 어떨까 했는데, 조건을 달아주고 하는 과정도 쉽지 않아서 일단 이 문제는 3중 for문으로 남겨두었다.
하지만 무조건 효율적인 방법이 있을 것이므로 시간이 날 때마다 강구해볼 것이다.
이 문제는 처음에 문자열 관련 메서드로 쉽게 풀었다..라고 생각했지만 런타임 오류가 떴다.
using System;
public class Solution {
public int solution(string t, string p) {
int answer = 0;
int num = p.Length;
for(int i = 0; i <= t.Length - num; ++i)
{
//int numOfT =
if(long.Parse(p) >= long.Parse(t.Substring(i, num)))
++answer;
}
return answer;
}
}
무슨 문제일까 생각해보니 문제의 제한사항에 "p의 길이 <= t의 길이 <= 10,000"라고 나와있는 것이다.
이 말은 숫자가 10,000정도가 된다는 것이 아니라 정수의 자리수가 10,000이 된다는 것이다.
사실 자료형마다 최대 최소 값이 기억나지는 않았고, "int로는 절대 못담을 수가 있을 것 같다"라는 생각이 들어, 바로 int.Parse
를 long.Parse
로 바꾸어서 해결했다.