마지막 인덱스 찾기

1부터 M까지 숫자가 들어있는 길이가 N인 리스트에서,

각 숫자가 마지막으로 등장하는 index를 순차적으로 담은 리스트를 리턴하세요.

예제

m data return
3 [1, 2, 3, 1, 2, 3, 1] [6, 4, 5]

설명

  • 1이 등장한 index는 0과 3과 6, 이중에 가장 마지막에 등장한 index 6
  • 2가 등장한 index는 1과 4, 이중에 마지막인 4
  • 3이 등장한 index는 2와 5, 이중에 마지막인 5

조건

  • M은 2보다 크고 1만보다 작은 숫자
  • N은 1보다 크고 10만보다 작은 숫자
1
2
3
M = 3
N = 7
data = [1,2,3,1,2,3,1]

1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
def solution(M, N, data):
dic = {}
dic_ls = [0] * M
for i in range(N-1, -1, -1):
last = data[i]
if last in dic:
continue
else:
dic[last] = i
dic_ls[last-1] = i
if len(dic) == M:
break

return dic_ls

2

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
def solution(M, N, data):
dic_ls = [0] * M
zero_count = M
for i in range(N-1, -1, -1):
last = data[i]

if dic_ls[last-1] == 0:
dic_ls[last-1] = i
zero_count -= 1

else:
continue

if zero_count == 0:
break

return dic_ls
Share