일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- SWIFTUI
- SWIFT
- DTFT
- 알고리즘 문제풀이
- 알고리즘
- 카카오 코딩테스트
- backjoon
- leetcode
- IOS
- 코테준비
- 코테
- 알고리즘문제풀이
- dft
- Leet Coding Challenge
- leet code
- 독서노트
- 이산신호처리
- 코딩테스트
- PYTHON
- 백준
- 스위프트
- 신호처리
- 파이썬
- Trie
- 트라이
- 전자공학
- 컨볼루션
- DSP
- 릿코드
- 프로그래머스
- Today
- Total
매일 매일 성장하는 섭섭군
[Seop's의 코드풀이] 백준 1205 등수구하기 -Python 본문
이번에 풀어 본 문제는 백준 1205번 등수구하기 문제입니다.
먼저 문제는 다음과 같습니다.
https://www.acmicpc.net/problem/1205
1205번: 등수 구하기
첫째 줄에 N, 송유진의 새로운 점수, 그리고 P가 주어진다. P는 10보다 크거나 같고, 50보다 작거나 같은 정수, N은 0보다 크거나 같고, P보다 작거나 같은 정수이다. 그리고 모든 점수는 2,000,000,000보다 작거나 같은 자연수 또는 0이다. 둘째 줄에는 현재 랭킹 리스트에 있는 점수가 비오름차순으로 주어진다. 둘째 줄은 N이 0보다 큰 경우에만 주어진다.
www.acmicpc.net

문제를 읽어보면 제목 그대로 등수를 구하는 문제입니다.
하지만 그냥 구하는 것이 아니라 조건이 몇가지 있습니다.
1. 만약 랭킹표에 유진이의 점수와 같은 것이 있다면 등수는 같지만 가장 마지막에 랭크된다.
예를들어 유진이의 점수가 80 랭킹표에 있는 점수가 [100, 80, 80, 70] 이라면
[100, 80, 80, 80(유진이 점수), 70]
처럼 되게 됩니다. 즉 등수는 2등이지만 순번 4번째인 것이죠
2. 랭킹표에 올라 갈수 있는 순번 p 가 주어지고 p 순번 안에 들어가지 못했을 경우 -1 을 출력한다.
위 두가지 조건을 고려해 가면서 문제를 풀면 좋을것 같습니다.
저는 본 문제를 다음과 같은 순서로 풀었습니다.

등수와 순번이 필요하기 때문에
answer = [ 등수, 순번] 을 저장 할 수 있도로 진행하였고
유진이의 점수와 동일한 것이 있는지 확인한후 작업을 진행하였습니다.
부족한점 댓글이나 쪽지로 피드백 해주시면 감사하겠습니다.
전체 코드는 다음과 같습니다.
import sys
input = sys.stdin.readline
N, s, p = map(int, input().split(" "))
if N == 0 :
# 랭킹 리스트가 비어있는경우
score_list = []
else :
score_list = list(map(int, input().split(" ")))
answer = [0, 0]
# answer[0] 은 등수, answer[1] 은 순번이다.
if s in score_list :
temp = score_list.index(s)
answer[1] = temp + 1
cnt = 0
for i in score_list[temp : ] :
if i == s :
cnt += 1
else :
break
answer[0] = temp + cnt + 1
else :
score_list.append(s)
score_list = sorted(score_list, reverse= True)
answer[0] = score_list.index(s) + 1
answer[1] = score_list.index(s) + 1
if answer[0] <= p :
print(answer[1])
else :
print(-1)
'알고리즘 문제풀이 > 백준' 카테고리의 다른 글
[Seop's의 코드풀이] 백준 1543 문서 검색 - Python (0) | 2020.04.30 |
---|---|
[Seop's의 코드풀이] 백준 1065 한수 (0) | 2020.04.29 |
[Seop's의 코드풀이] 백준 1788 피보나치 수의 확장 - python (0) | 2020.04.27 |
[Seop's의 코드풀이] 백준 1431 시리얼 번호 - Python (0) | 2020.04.26 |
[Seop's의 코드풀이] Back_Joon 10825 국영수 , Python (0) | 2020.04.21 |