등수 구하기

 

1205번: 등수 구하기

첫째 줄에 N, 태수의 새로운 점수, 그리고 P가 주어진다. P는 10보다 크거나 같고, 50보다 작거나 같은 정수, N은 0보다 크거나 같고, P보다 작거나 같은 정수이다. 그리고 모든 점수는 2,000,000,000보

www.acmicpc.net

내 코드

from sys import stdin

# N 주어질 리스트 길이
# S 태수 점수
# P 랭킹 순위 수

N, S, P = map(int, stdin.readline().split())
scores = []

# 점수 리스트 세팅
if N > 0:
    scores = list(map(int, stdin.readline().split()))

scores.append(S)
scores.sort(reverse=True)

ranks = []
for idx in range(len(scores)):
    if idx == 0:
        ranks.append(1)
    elif idx != 0 and scores[idx-1] == scores[idx]:
        ranks.append(ranks[-1])
    else:
        ranks.append(len(ranks) + 1)

rank = -1
if len(ranks) <= P:
    index = scores.index(S)
    rank = ranks[index]
else:
    index = scores.index(S)
    rank = ranks[index]

    # 등수가 P와 같을 때 동점자 있는지 확인
    if rank == P and ranks.count(rank) > 1:
        rank = -1

    if rank < P < ranks.count(rank) + len(ranks[:index]):
        rank = -1

    # rank 가 P보다 큰 경우
    if rank > P:
        rank = -1

# print(ranks)
print(rank)
728x90

임스와 함께하는 미니게임

 

25757번: 임스와 함께하는 미니게임

첫 번째 줄에는 사람들이 임스와 같이 플레이하기를 신청한 횟수 $N$과 같이 플레이할 게임의 종류가 주어진다. $(1 \le N \le 100\,000)$ 두 번째 줄부터 $N$개의 줄에는 같이 플레이하고자 하는 사람들

www.acmicpc.net

 

 

내 코드

from sys import stdin

N, G = map(str, stdin.readline().split())
user = []

for _ in range(int(N)):
    user.append(stdin.readline().strip())

user = set(user)
if G == "F":
    print(len(user)//2)
elif G == "O":
    print(len(user)//3)
else:
    print(len(user))
728x90

실버 5 - 올림픽

 

8979번: 올림픽

입력의 첫 줄은 국가의 수 N(1 ≤ N ≤ 1,000)과 등수를 알고 싶은 국가 K(1 ≤ K ≤ N)가 빈칸을 사이에 두고 주어진다. 각 국가는 1부터 N 사이의 정수로 표현된다. 이후 N개의 각 줄에는 차례대로 각

www.acmicpc.net

 

내 코드

from sys import stdin

# N: 참여 나라 수
# K: 등수 구하고자 하는 나라

# arr[0] 국가 나타내는 숫자
# arr[1] 금
# arr[2] 은
# arr[3] 동

N, K = map(int, stdin.readline().split())
scores = []
target = []

for _ in range(N):
    newScore = (list(map(int, stdin.readline().split())))
    if newScore[0] == K:
        target = newScore
    else:
        scores.append(newScore)

scores.sort(key=lambda x: (x[1], x[2], x[3]), reverse=True)
win = []
lose = []

for idx in range(1, 4):
    for s in scores:
        if idx >= 2:
            if s not in win and s not in lose and s[idx] > target[idx]:
                win.append(s)
            elif s not in win and s not in lose and s[idx] < target[idx]:
                lose.append(s)
        else:
            if s[idx] > target[idx]:
                win.append(s)
            elif s[idx] < target[idx]:
                lose.append(s)
    for w in win:
        if w in scores:
            scores.remove(w)
    if len(lose) > 0:
        for l in lose:
            if l in scores:
                scores.remove(l)

print(len(win) +1)
728x90

실버 5 - 덩치 7568

Brute Froce Search

Implements

 

7568번: 덩치

우리는 사람의 덩치를 키와 몸무게, 이 두 개의 값으로 표현하여 그 등수를 매겨보려고 한다. 어떤 사람의 몸무게가 x kg이고 키가 y cm라면 이 사람의 덩치는 (x, y)로 표시된다. 두 사람 A 와 B의 덩

www.acmicpc.net

 

내 코드

from sys import stdin

N = int(stdin.readline())
p = []
rank = [0 for i in range(N)]

for _ in range(N):
    p.append(list(map(int, stdin.readline().split())))

idx = 0
while True:
    if idx == N:
        break
    r = 1
    for i in range(N):
        if i == idx:
            pass
        if p[idx][0] < p[i][0] and p[idx][1] < p[i][1]:
            r += 1
    rank[idx] = r
    idx += 1

print(*rank)
728x90

+ Recent posts