[백준] 13414번 수강신청

거북이·2023년 1월 22일
0

백준[실버3]

목록 보기
47/92
post-thumbnail

💡문제접근1

  • 리스트를 사용해서 뒤에 중복되는 학번이 존재하면 앞에 있는 학번을 제거하는 방식으로 접근했지만 시간초과가 발생했다.

💡코드1

import sys
input = sys.stdin.readline

K, L = map(int, input().split())
student_ID = []
li = []
for _ in range(L):
    student_ID.append(int(input()))

for i in range(L):
    if student_ID[i] in student_ID[i+1:]:
        continue
    else:
        li.append(student_ID[i])

for i in range(K):
    print(li[i])

💡문제접근2

  • 딕셔너리를 사용했다. 만약 앞에 입력했던 학번이 뒤에 존재한다면 앞에 있는 학번의 번호를 뒤에 있는 학번의 번호로 갱신한다. 그 다음 딕셔너리를 value값을 기준으로 오름차순 정렬한다.

💡코드2

import sys

K, L = map(int, sys.stdin.readline().strip().split())
dict = {}
for i in range(L):
    student_ID = sys.stdin.readline().strip()
    dict[student_ID] = i

dict = sorted(dict.items(), key = lambda x : x[1])

cnt = 0
for i in dict:
    if cnt == K:
        break
    print(i[0])
    cnt += 1

💡소요시간 : 20m

0개의 댓글