Algorithms/LeetCode
[LeetCode] 1431. Kids With the Greatest Number of Candies
junhwa100
2024. 9. 19. 12:16
1. 문제 이해
candies 리스트가 주어진다.(길이가 n)
candies[i]는 i번째 아이가 가지고 있는 사탕의 수를 의미한다.
리스트에 포함되지 않은 엑스트라 사탕의 수도 주어진다.
길이가 n인 boolean 리스트를 리턴해야 한다.
i번째 아이에게 모든 엑스트라 사탕을 준다.
그 아이가 모든 아이들 중 가장 많은 사탕을 가지게 될 경우 리스트의 i번째 값은 True가 되고, 그렇지 않을 경우 False가 된다.
2. 풀이 과정
반복문으로 i번째 아이에게 엑스트라 사탕을 준다.
Python의 index 함수를 이용하여 i번째 아이가 모든 아이들 중 가장 많은 사탕을 가지게 되었는지 확인한다.
class Solution:
def kidsWithCandies(self, candies: List[int], extraCandies: int) -> List[bool]:
ans = []
for i in range(len(candies)):
candies[i] += extraCandies
if candies.index(max(candies)) == i:
ans.append(True)
else:
ans.append(False)
candies[i] -= extraCandies
return ans
리스트 내에서 최댓값이 여러 개 있더라도 첫 번째로 등장하는 최댓값의 인덱스를 리턴하는 문제가 발생한다.
다른 방법을 사용한다.
원래 candies 리스트의 최댓값을 구한다.
candies[i] + extraCandies가 최댓값보다 크거나 같다면 True를 ans에 추가한다.
for candy in candies:
if candy + extraCandies >= max_candies:
ans.append(True)
else:
ans.append(False)
3. 전체 코드
class Solution:
def kidsWithCandies(self, candies: List[int], extraCandies: int) -> List[bool]:
max_candies = max(candies)
ans = []
for candy in candies:
if candy + extraCandies >= max_candies:
ans.append(True)
else:
ans.append(False)
return ans
4. 생각할 점
- Python의 index(max()) 함수는 최댓값이 여러 개 있을 때 첫 번째로 등장하는 최댓값의 인덱스만을 리턴한다.
5. 출처
- https://leetcode.com/problems/kids-with-the-greatest-number-of-candies/