www.acmicpc.net/problem/13414

 

13414번: 수강신청

입력 데이터는 표준 입력을 사용한다. 입력은 1개의 테스트 데이터로 구성된다. 입력의 첫 번째 줄에는 과목의 수강 가능 인원 K(1 ≤ K ≤ 100,000)와 학생들이 버튼을 클릭한 순서를 기록한 대기목록의 길이 L(1 ≤ L ≤ 500,000)이 주어진다. 두 번째 줄부터 L개의 줄에는 수강신청을 버튼을 클릭한 학생의 학번이 클릭 순서대로 주어진다. 학번은 8자리의 숫자로 이루어져 있다.

www.acmicpc.net

[Try]

1. 리스트에서, 이미 신청한 친구면 지우고 맨뒤에다 추가하는 식으로 단순하게 짰더니 시간초과가 났다. 더 효율적인 방법을 찾아야

     했다.

2. 일단 리스트에 전부 넣고, 출력할때 리스트 쭉 보면서 뒤에 한번도 입력안된애만 출력하게 했는데도 시간초과. 활용할만한 자료구조

     가 있나?

3. 딕셔너리의 키에 학번 값에는 반복 인덱스번호를 넣어준뒤, 출력할 때 값들 정렬한 후 앞에서부터 k개 만큼 딕셔너리에서 찾아서 출

     력. 또 시간 초과한다. ㅋㅋㅋㅋㅋ열받네? 아예 중첩반복문을 사용하지 않는 방식으로 해봐야겠다

[Point]

1. 시간복잡도 문제가 확실하다.. 중첩반복 빼니까 바로 된다. 정렬하고 그러는 시간도 들어가면 어차피 그게 그거 아닌가 해서 그냥

     계속 2중포문 썼던것이 화근.

2. 딕셔너리를 값 기준으로 정렬하는 방법 (operator, lambda)

[More]

1. 시간복잡도 개념

2. 람다함수

'PS > BOJ' 카테고리의 다른 글

[백준] 1065.py : 한수  (0) 2020.05.11
[백준] 4673.py : 셀프 넘버  (0) 2020.05.11
[백준] 7785.py : 회사에 있는 사람  (0) 2020.05.10
[백준] 1764.py : 듣보잡  (0) 2020.05.10
[백준] 1302.py : 베스트셀러  (0) 2020.05.10

+ Recent posts