Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 알고리즘
- 구슬탈출2
- Algorithm
- python
- 피보나치 함수
- Reverse Shuffle Merge
- 머신러닝
- hackerrank
- 격파르타 후기
- BFS: Shortest Reach in a Graph
- Recursion: Davis' Staircase
- Find the nearest clone
- 해커랭크
- 코딩테스트
- candies
- 야근지수
- Roads and Libraries
- 프로그래머스
- DFS: Connected Cell in a Grid
- Special String Again
- Interview Preparation Kit
- 파이썬
- 백준
- Max Array Sum
- 매칭점수
- 격파르타 장점
- 격파르타 합격후기
- Common Child
- [sqld]자격증합격
- programmers
Archives
- Today
- Total
Archive
[Hackerrank]Climbing the Leaderboard 본문
www.hackerrank.com/challenges/climbing-the-leaderboard/problem
후기
- 문제 입력 조건을 꼼꼼히 봐야함.
- scores의 경우 내림차순으로(100, 90, 80, ...) 입력받고, alice의 경우 오름차순(50, 60, 79, ...)으로 입력받는다.
- 처음에는 입력 조건 제대로 안보고 scores list를 매번 반복문을 통해 순회하며 올바른 등수를 찾았지만, 시간초과 남.
- 나중에 입력 조건 확인 후, 정렬된 값으로 입력받기 때문에 alice 등수를 한쪽 방향으로만 증가 혹은 감소하도록 구현 -> scores를 한 번 순회하면 등수를 구할 수 있음 -> O(n) 시간복잡도로 계산할 수 있음.
파이썬 코드
def climbingLeaderboard(scores, alice):
# scores를 오름차순으로 정렬
scores = sorted(list(set(scores)))
index = 0
result = []
length = len(scores)
for a in alice:
# alice의 점수가 score[index]보다 작을 때까지 index 증가시킴.
while index < length and a >= scores[index]:
index += 1
result.append( length+1 - index)
return result
'공부 > Algorithm' 카테고리의 다른 글
[Hackerrank] Hash Tables: Ice Cream Parlor (0) | 2020.08.10 |
---|---|
[programmers] Level4. 징검다리 (0) | 2020.08.06 |
[programmers] Level4. 가사검색 (0) | 2020.08.06 |
[programmers] Level4. 지형이동 (0) | 2020.08.05 |
[programmers] Level3. 종이접기 (0) | 2020.07.29 |
Comments