Algorithm/백준

[백준 알고리즘] 17299번: 오등큰수 (Python)

에릭 Kim 2023. 6. 6. 15:44
반응형

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

 

17299번: 오등큰수

첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째에 수열 A의 원소 A1, A2, ..., AN (1 ≤ Ai ≤ 1,000,000)이 주어진다.

www.acmicpc.net

 

소스코드

 

 

풀이

★ 딕셔너리를 사용하여 입력받은 배열 안의 수가 몇번 나오는지 확인해줍니다. 

ex) a = [1,1,2,3,4,2,1] => {1: 3, 2: 2, 3: 1, 4: 1}

 

정답을 저장하는 배열 ans는 -1로 초기화 하는데, 만약 해당 수의 오등큰수가 없다면 -1이 출력되어야 하기 때문입니다.

 

★ 입력받은 배열을 읽으면서 stack의 최상단의 값이 딕셔너리 안에 가지고 있는 수가 해당 값의 수보다 작을 때 stack안의 수는 pop되고, 반복문을 돌던 수가 stack의 최상단 수의 오등큰수이기 때문에 그 수를 정답을 출력하는 리스트인 ans에 저장해줍니다 ! 

 

★ 이 때 인덱스를 사용하는 이유는 배열의 위치에 맞게 값을 넣어줘야 하기 때문입니다 ! 

반응형