아래는 Leetcode 2237번 문제에 대한 파이썬 솔루션 코드에 한국어 주석을 추가한 버전입니다.
## 파이썬 솔루션 코드 (한국어 주석 포함)
```python
from typing import List
def countPositions(n: int, lights: List[List[int]], requiredBrightness: int) -> int:
# 밝기 변화를 기록할 배열 초기화
brightness = [0] * (n + 1)
# 조명에 따른 밝기 변화를 적용
for left, right, brightnessChange in lights:
brightness[left] += brightnessChange # 시작 위치에서 밝기 증가
if right + 1 < n:
brightness[right + 1] -= brightnessChange # 끝 위치 다음에서 밝기 감소
# 각 위치의 실제 밝기를 계산
currentBrightness = 0
count = 0
for i in range(n):
currentBrightness += brightness[i] # 현재 위치의 밝기 업데이트
if currentBrightness >= requiredBrightness: # 요구되는 밝기 이상인지 확인
count += 1 # 조건을 만족하는 위치 수 증가
return count # 조건을 만족하는 위치의 총 수 반환
```
## 코드 설명
- **입력**:
- `n`: 거리의 길이
- `lights`: 밝기를 조절하는 조명 정보 (좌표와 밝기 변화)
- `requiredBrightness`: 요구되는 최소 밝기
- **작동 방식**:
- `brightness` 배열을 사용하여 각 위치의 밝기 변화를 기록합니다.
- 각 조명에 대해 시작 위치에서 밝기를 증가시키고, 끝 위치 다음에서 감소시킵니다.
- 마지막으로, 각 위치의 실제 밝기를 계산하고 요구되는 밝기 이상인 위치의 수를 셉니다.
Leetcode 506번 문제는 "Relative Ranks"로, 주어진 점수에 따라 순위를 매기고, 상위 3명에게는 메달을 수여하는 문제입니다. 아래는 이 문제에 대한 파이썬 솔루션입니다.
## 문제 설명
- 주어진 점수 리스트에서 각 점수에 대한 순위를 매깁니다.
- 상위 3명에게는 "Gold Medal", "Silver Medal", "Bronze Medal"을 수여하고, 나머지 점수는 순위로 표시합니다.
## 파이썬 솔루션
아래는 Leetcode 506번 문제를 해결하기 위한 파이썬 코드입니다:
```python
def findRelativeRanks(score):
# 점수와 인덱스를 함께 저장
score_with_index = [(s, i) for i, s in enumerate(score)]
# 점수를 내림차순으로 정렬
score_with_index.sort(reverse=True, key=lambda x: x[0])
# 결과 리스트 초기화
result = [""] * len(score)
# 순위 매기기
for rank, (s, i) in enumerate(score_with_index):
if rank == 0:
result[i] = "Gold Medal"
elif rank == 1:
result[i] = "Silver Medal"
elif rank == 2:
result[i] = "Bronze Medal"
else:
result[i] = str(rank + 1)
return result
```
## 코드 설명
- **점수와 인덱스 저장**: 각 점수와 그에 해당하는 인덱스를 튜플로 묶어 리스트에 저장합니다.
- **정렬**: 점수를 기준으로 내림차순으로 정렬합니다.
- **순위 매기기**: 정렬된 리스트를 순회하며 각 점수에 대해 순위를 매깁니다. 상위 3명에게는 메달을 부여하고, 나머지 점수는 순위로 표시합니다.
## 예시
```python
scores = [5, 4, 3, 2, 1]
print(findRelativeRanks(scores))
# 출력: ['Gold Medal', 'Silver Medal', 'Bronze Medal', '4', '5']
```