본문 바로가기

코딩테스트(python)/백준

백준 18870번 파이썬

반응형

1. 문제

2. 설명

이 문제의 핵심은 파이썬의 '딕셔너리' 이다.

처음엔 입력받은 값들이 담긴 배열을 복사해서 비교해주면 안될까? 라고 생각했는데,

역시나 2중 for문은 타임아웃이 떴다.

답을 보니 타임아웃을 줄이기위해 set과 dic을 사용해야 했다. 

코드 풀이)

입력받은 값들이 담긴 배열을 set -> sorted 후 list 형태로 만들어준다. 

dic에 key로는 각 인덱스에 해당하는 데이터를, value로는 각 인덱스 값을 넣어준다.

3. 코드

내가 작성한 코드)

import sys
n = int(sys.stdin.readline())
x = list(map(int, sys.stdin.readline().split()))
copy = []
for i in x:
    copy.append(i);
copy.sort()
answer = []
for i in range(0,len(x)):
    for j in range(0,len(x)):
        if x[i] == copy[j]:
            answer.append(j)
            break

print(*answer)

정답)

import sys
N = int(sys.stdin.readline())
arr = list(map(int,sys.stdin.readline().split()))
arr2 = []
arr2 = list(sorted(set(arr)))

dic = {arr2[i]:i for i in range (len(arr2))}

print(*[dic[i] for i in arr])

아직도 파이썬 입출력이 헷갈린다...

이번 기회로 입출력, dic 사용법 잘 숙지해두자!ㅠㅠ

반응형

'코딩테스트(python) > 백준' 카테고리의 다른 글

백준 10841번 파이썬  (0) 2022.09.20
백준 1181번 파이썬  (0) 2022.09.14
백준 11651번 파이썬  (0) 2022.09.14
백준 11650번 파이썬  (0) 2022.09.14
백준 1427번 파이썬  (0) 2022.09.13