링크 : https://www.acmicpc.net/problem/1205
1205번: 등수 구하기
첫째 줄에 N, 태수의 새로운 점수, 그리고 P가 주어진다. P는 10보다 크거나 같고, 50보다 작거나 같은 정수, N은 0보다 크거나 같고, P보다 작거나 같은 정수이다. 그리고 모든 점수는 2,000,000,000보
www.acmicpc.net
- 문제
- 소요시간: 30분(실패)
- 설계하기(접근방법)
1. 입력받기
map 함수로 입력을 받은 후
n이 0이 이상일 경우에는 랭크를 구하고, 아닐 경우는 1을 출력한다
2 구현하기
태수의 점수를 리스트의 0 번째 원소부터 비교하여 더해 나가기 시작한다.
1 이라는 rank를 넣어두고, 만약 1번째 원소보다 크면, 즉시 랭크를 출력한다
만약 같은 점수와 마주친 경우, 랭크의 가장 마지막 원소(등수)와 비교하여 그 등수보다는 숫자가 크다면 랭크를 출력한다
만약 같은 점수와 가장 마지막 점수가 같은 경우, 현재 랭킹보드 자리가 남아 있다면 현재 등수를 출력하고, 아니라면 -1을 출력한다
모든 것을 순회하고, 랭킹보드가 비어있으면
가장 마지막랭킹보다 점수가 낮으면 꼴찌 등수를 출력하고
비어있지 않다면 -1을 출력한다
3. 출력하기
위와 같다
- 코드(출력)
n, t_score, p = map(int, input().split())
if n > 0:
rank_list = list(map(int, input().split()))
rank = 1
for i in range(n):
if t_score > rank_list[i]:
print(rank)
break
elif t_score == rank_list[i]:
if t_score <= rank_list[n - 1] and n == p:
print(-1)
break
else:
print(rank)
break
else:
rank += 1
if rank == (n + 1) and n == p:
print(-1)
break
elif rank == (n + 1) and p > n:
print(rank)
else:
print(1)
- 얻어갈 부분
1. 문제를 제대로 독해하지 않아서, 랭크를 출력하는데 미스가 있었다
2. 경우의 수를 다 나누지 못해서 테스트 케이스만 통과했다. 좀더 깊게 생각해보자
'알고리즘(백준) > 구현' 카테고리의 다른 글
[알고리즘/구현] 2852번 : NBA 농구 - python (1) | 2023.12.29 |
---|---|
[알고리즘/구현] 10709번 : 기상캐스터 - python (1) | 2023.12.28 |
[알고리즘/구현] 9017번 : 크로스 컨트리 - python (0) | 2023.12.27 |
[알고리즘/구현] 10431번 : 줄세우기 - python (0) | 2023.12.26 |
[알고리즘/구현] 11723번 : 집합 - python (1) | 2023.12.26 |