물류 센터의 컨베이어를 따라 화물이 한 줄로 지나갑니다.
각 화물에는 분류 코드가 영문 소문자 한 글자로 찍혀 있고, 지나간 순서대로 이어 적은 것이 문자열 s 입니다.
작업자는 화물마다 "같은 코드의 화물이 몇 칸 뒤에 또 오는지"를 알고 싶어 합니다.
각 위치 i 에 대해 다음을 계산해 배열로 반환하세요.
i 보다 뒤쪽에서 s[i] 와 같은 글자가 가장 먼저 나오는 위치를 j 라 할 때, 거리 j - i-1solution(s: string): number[]| s | 반환값 |
|---|---|
"kayak" |
[4, 2, -1, -1, -1] |
"cocoa" |
[2, 2, -1, -1, -1] |
"zzz" |
[1, 1, -1] |
"melon" |
[-1, -1, -1, -1, -1] |
"kayak" 의 계산 과정:
k(0): 뒤쪽의 k는 4번 → 4 - 0 = 4
a(1): 뒤쪽의 a는 3번 → 3 - 1 = 2
y(2): 뒤에 y 없음 → -1
a(3): 뒤에 a 없음 → -1
k(4): 뒤에 k 없음 → -1마지막 글자는 언제나 -1 이며, "melon" 처럼 모든 글자가 서로 다르면 전부 -1 입니다.
시간 복잡도 목표: O(N)
▶ 실행은 기록 없이 채점만, 제출은 결과가 진행률·오답노트에 기록됩니다.