Baekjoon Case

[백준 #18870] 좌표 압축 - 파이썬(python)

Scarlett_C 2021. 8. 13. 12:15
728x90

https://www.acmicpc.net/problem/18870

문제를 이해하는데도 시간이 좀 걸린 것 같다.

파헤쳐보니 RANK를 매겨서 출력하면 될 것 같다.

같은 수가 있더라도 등수에 반영 안하는?,,

import sys
N=int(input())
numlist=sys.stdin.readline().split()
numset=list(set(numlist))
numset.sort()
for i in range(N):
    print(numset.index(numlist[i]),end=' ')

시간초과...

list index가 시간이 엄청 걸리는 것 같다..

아무래도 다른 탐색 방법을 찾아야 할 것 같다.

 

import sys
N=int(input())
numlist=sys.stdin.readline().split()
ranklist=[0 for i in range(N)]

for i in range(N):
    cnt=0
    for j in range(N):
        if numlist[i]>numlist[j]:
           ranklist[i]+=1
print(ranklist,sep=' ')

또 시간초과...

 

import sys
N=int(input())
numlist=sys.stdin.readline().split()
numset=list(set(numlist))
numset.sort()
numdict={}
for i in range(len(numset)):
    numdict[numset[i]]=i

for i in numlist:
    sys.stdout.write(str(numdict[i])+' ')

그래서 딕셔너리를 활용해서 문제를 풀어봤다.

시간초과가 나길래 stdout으로 출력..

하지만 틀렸다고.. 대체 뭐가 문제..

import sys
N=int(input())
numlist=list(map(int,sys.stdin.readline().split()))
numset=sorted(list(set(numlist)))
numdict={numset[i]: i for i in range(len(numset))}
for i in numlist:
    sys.stdout.write(str(numdict[i])+' ')

위 처럼 했더니 일단 맞았다.

입력값을 받을 때 int값으로 받아서 리스트로 처리 하지 않고

그냥 입력해서 문자열처럼 처리 되어서 그런건가..?

출력값은 어차피 똑같은데 sort도 되고..

굳이 int값으로 받아야만 정답처리가 되는건지.. 모르겠담

 

728x90