1. Today
알고리즘 코드 카타에서 만난 한 녀석을 아직도 해결하지 못했다. 흐음,,, 정답은 맞는데 자꾸만 시간 초과가 뜬다. 이런 경우에 어떻게 해결해야 할지 참 난감하다. 차라리 정답이 틀린 거면 어찌어찌 찾기라도 하는데 이거 참~
두 번째 시도에서 어떤 분이 일일이 나눠서 해결했다는 말을 듣고, 하나하나 if문 조건을 걸어가며 만들어봤지만.. 역시나 시간 초과다. 흠.. 도무지 원인을 알 수가 없다. 다른 방법으로 시도해봐야 할까?
<2차 시도>
using System;
using System.Collections.Generic;
using System.Linq;
public class Solution
{
public int solution(int[] ingredient)
{
int answer = 0;
int currentIndex = 0;
int compareNum = 0;
int indexCount = 0;
int hamburgerCount = 0;
List<int> ingredientToList = ingredient.ToList();
List<int> tempHamburbur = new List<int>();
while (true)
{
compareNum = ingredientToList[currentIndex];
indexCount = ingredientToList.Count;
if (compareNum == 1)
{
if (hamburgerCount == 0)
{
hamburgerCount++;
tempHamburbur.Add(1);
}
else if (hamburgerCount == 3)
{
answer++;
ingredientToList.RemoveRange(currentIndex - 3, 4);
currentIndex = -1;
hamburgerCount = 0;
}
else
{
tempHamburbur.Clear();
hamburgerCount = 1;
tempHamburbur.Add(1);
}
}
else if (
(compareNum == 2 && hamburgerCount == 1) || (compareNum == 3 && hamburgerCount == 2)
)
{
tempHamburbur.Add(2);
hamburgerCount++;
}
else
{
tempHamburbur.Clear();
hamburgerCount = 0;
}
currentIndex++;
if ((currentIndex + 4 - hamburgerCount) > indexCount)
{
break;
}
}
return answer;
}
}
<3차 시도>
using System;
using System.Collections.Generic;
using System.Linq;
public class Solution
{
public int solution(int[] ingredient)
{
int answer = 0;
int findIngredient;
string ingredientToString = String.Join("", ingredient);
int stringLength = ingredientToString.Length;
do
{
findIngredient = ingredientToString.IndexOf("1231");
if (findIngredient == -1 || stringLength < 4)
{
break;
}
else if (findIngredient != -1)
{
ingredientToString = ingredientToString.Remove(findIngredient, 4);
stringLength--;
answer++;
}
} while (findIngredient != -1);
return answer;
}
}
<4차 시도>
using System;
using System.Collections.Generic;
using System.Linq;
public class Solution
{
public int solution(int[] ingredient)
{
int answer = 0;
int index = ingredient.Length;
int hamburgurIndex = -1;
int findIndex;
string hamburgur = "";
for (int i = 0; i < index; i++)
{
hamburgurIndex++;
hamburgur = hamburgur.Insert(hamburgurIndex, ingredient[i].ToString());
if (4 <= hamburgurIndex)
{
findIndex = hamburgur.IndexOf("1231");
if (findIndex != -1)
{
answer++;
hamburgur = hamburgur.Remove(findIndex, 4);
hamburgurIndex -= 4;
}
}
}
return answer;
}
}
'취준 > 스파르타 내일배움캠프 Unity' 카테고리의 다른 글
23.10.04 - 스파르타 내일배움캠프 Unity 8기 [TIL] - Day.56 (2) | 2023.10.05 |
---|---|
23.09.26 - 스파르타 내일배움캠프 Unity 8기 [TIL] - Day.48 (0) | 2023.09.26 |
23.09.21 - 스파르타 내일배움캠프 Unity 8기 [TIL] - Day.43 (0) | 2023.09.22 |
23.09.20 - 스파르타 내일배움캠프 Unity 8기 [TIL] - Day.44 (0) | 2023.09.21 |
23.09.19 - 스파르타 내일배움캠프 Unity 8기 [TIL] - Day.43 (0) | 2023.09.19 |