[Minimum Number Game]
문제
입력과 출력
코드
class Solution:
def numberGame(self, nums: List[int]) -> List[int]:
arr=[]
ext=[]
nums.sort()
for i in range(len(nums)):#0,1,2,3
ext.append(nums[i])
if (i+1)%2==0:
ext.reverse()
for j in range(len(ext)):
arr.append(ext[j])
ext=[]
return arr
알고리즘
- 문제 정리
#앨리스랑 밥이 게임함
#매라운드마다 한번씩 움직여야함
#매라운드 앨리스가 먼저 nums에서 제일 작은 요소를 제거해야함. 그다음 밥
#밥이 먼저 제거된 요소를 arr에 넣어야함. 그 다음 앨리스.- 알고리즘
#먼저 정답으로 쓸 배열 arr과 임시로 사용할 배열 ext도 선언
#nums 배열을 정렬
#ext에 가장 작은 수를 담고, 한번더 담은 후에
#밥이 먼저 arr에 담아야 하므로 ext를 뒤집어준다.
#이 뒤집은 리스트의 요소들을 순서대로 arr에 담고
#다음 순서를 위해 ext를 비워준다.
처음에는 min 함수를 썼었는데, 도대체 왜인지 아직 이해도 못했지만 자꾸 빈배열이 입력으로 들어왔다는 오류가 떴다.
찾아보다가 안돼서 그냥 정렬하고 작은 수를 추출하는 방식으로 바꿨다.
오늘도 조금 성장했던 건... 풀이 참고를 가장 최소한으로 하여 알고리즘을 짰다는 것 !!
솔직히 런타임이 55초라 좋은 풀이는 아닌것 같지만 그래도 알고리즘을 완성했다는 것에 의미가 있다고 생각한다!!
Something new I learned
1. 수의 크고 작음을 비교할때는 min, max뿐만 아니라 sort로 정렬을 하여 추출할 수 있다는 것
To do List
1. 코드의 런타임을 줄일 수 있는 방법을 생각해보자!! 좀 더 간결하고 정확한 코드를 작성해보면 좋을듯.
다른 코드도 좀 참고해보자
2. min 을 썼을때 오류가 났던 부분 알아보자