상세 컨텐츠

본문 제목

항해29일차

본문

728x90
반응형

아래는 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']
```


728x90
반응형

'<알고리즘 문제풀이& 연습> > 코딩테스트 연습' 카테고리의 다른 글

항해31일차  (0) 2024.11.28
항해30일차  (1) 2024.11.27
항해28일차  (1) 2024.11.25
항해27일차  (1) 2024.11.24
항해26일차  (0) 2024.11.23

관련글 더보기