Programmers - Js - 가장 가까운 같은 글자

문제 설명

문자열 s가 주어졌을 때, s의 각 위치마다 자신보다 앞에 나왔으면서, 자신과 가장 가까운 곳에 있는 같은 글자가 어디 있는지 알고 싶습니다. 예를 들어, s="banana"라고 할 때, 각 글자들을 왼쪽부터 오른쪽으로 읽어 나가면서 다음과 같이 진행할 수 있습니다.

  • b는 처음 나왔기 때문에 자신의 앞에 같은 글자가 없습니다. 이는 -1로 표현합니다.
  • a는 처음 나왔기 때문에 자신의 앞에 같은 글자가 없습니다. 이는 -1로 표현합니다.
  • n은 처음 나왔기 때문에 자신의 앞에 같은 글자가 없습니다. 이는 -1로 표현합니다.
  • a는 자신보다 두 칸 앞에 a가 있습니다. 이는 2로 표현합니다.
  • n도 자신보다 두 칸 앞에 n이 있습니다. 이는 2로 표현합니다.
  • a는 자신보다 두 칸, 네 칸 앞에 a가 있습니다. 이 중 가까운 것은 두 칸 앞이고, 이는 2로 표현합니다.

따라서 최종 결과물은 [-1, -1, -1, 2, 2, 2]가 됩니다.

문자열 s이 주어질 때, 위와 같이 정의된 연산을 수행하는 함수 solution을 완성해주세요.

제한 사항

  • 1 ≤ s의 길이 ≤ 10,000
    • s은 영어 소문자로만 이루어져 있습니다.

입출력 예

나의 풀이

function solution(s) { let answer = []; for(let i=0; i<s.length; i++) { // 처음나온 스펠링을 구분하기위해 사용 let existSpelling = false; // 같은 스펠링중 가장 가까운 스펠링의 index let prevSpellingIndex = 0; for(let j=0; j<i; j++) { // i 번째 스펠링이 전체 단어에 들어있다면 if(s[i] === s[j]) { existSpelling = true; prevSpellingIndex = j; } } // i 번째 스펠링이 처음 나온것이라면 -1 if(!existSpelling) answer.push(-1) // 처음 나온 스펠링이 아니라면 가장 가까운 이전 스펠링 index 저장 else answer.push(i - prevSpellingIndex) } return answer; }

태그

프로그래머스

programmers

프로그래머스 가장 가까운 같은 글자

프로그래머스 js 가장 가까운 같은 글자

가장 가까운 같은 글자

js 가장 가까운 같은 글자

javascript 가장 가까운 같은 글자

자바스크립트 가장 가까운 같은 글자

파이썬 가장 가까운 같은 글자

자바 가장 가까운 같은 글자