You are given a 0-indexed integer array nums of even length and there is also an empty array arr. Alice and Bob decided to play a game where in every round Alice and Bob will do one move. The rules of the game are as follows:
- Every round, first Alice will remove the minimum element from nums, and then Bob does the same.
- Now, first Bob will append the removed element in the array arr, and then Alice does the same.
- The game continues until nums becomes empty.
Return the resulting array arr.
Example 1:
Input: nums = [5,4,2,3]
Output: [3,2,5,4]
Explanation: In round one, first Alice removes 2 and then Bob removes 3. Then in arr firstly Bob appends 3 and then Alice appends 2. So arr = [3,2].
At the begining of round two, nums = [5,4]. Now, first Alice removes 4 and then Bob removes 5. Then both append in arr which becomes [3,2,5,4].
Example 2:
Input: nums = [2,5]
Output: [5,2]
Explanation: In round one, first Alice removes 2 and then Bob removes 5. Then in arr firstly Bob appends and then Alice appends. So arr = [5,2].
Constraints:
- 2 <= nums.length <= 100
- 1 <= nums[i] <= 100
- nums.length % 2 == 0
이 문제는 다행히 꽤 쉽게 풀었다.
처음에는 min()을 사용해서 최솟값을 구하려고 했는데 더 쉬운 방법이 있었다.
sort를 한 뒤 인덱스 0번, 1번을 찾으면 쉽게 가장 작은 값, 두번째로 작은 값을 구할 수 있다.
class Solution:
def numberGame(self, nums: List[int]) -> List[int]:
# 매 턴마다 앨리스가 nums의 minimum element를 삭제함
# 밥도 똑같이 실행함
# 밥은 삭제한 element를 arr에 append함
# 앨리스도 똑같이 실행함
# nums가 empty일 때까지 게임 실행
arr = []
while(len(nums) != 0):
nums.sort()
rmv_alice = nums[0]
rmv_bob = nums[1]
nums.remove(rmv_alice)
nums.remove(rmv_bob)
arr.append(rmv_bob)
arr.append(rmv_alice)
return arr
'Languages > Python' 카테고리의 다른 글
[Python] [백준 #1026] zip으로 리스트끼리 연산하기 (0) | 2024.07.12 |
---|---|
[Python] leetcode | 20. Valid Parentheses 괄호 짝 맞추기 | Stack (0) | 2024.05.26 |
[Python] 프로그래머스 | 같은 숫자는 싫어 | append (0) | 2024.05.24 |
[Python] [백준 #20291] Counter로 배열 요소 개수 세기 (0) | 2024.05.10 |
[Python] [백준 #1764] 두 개의 set(집합) 중복 요소 출력하기 (0) | 2024.05.10 |