가장 가까운 같은 글자

Jtiiin:K·2023년 12월 21일
0
post-thumbnail

문제설명

문자열 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은 영어 소문자로만 이루어져 있습니다.

정답

정답출처: https://school.programmers.co.kr/questions/51019

const frontCheck = {}
    return s.split('').map((str,idx)=>{
        if(frontCheck[str] !== undefined){
            // 이미 존재하면 차이를 리턴하고 해당 idx로 갱신 
            const frontDistance = idx - frontCheck[str] 
            // 2(frontDistance) = 3(idx) - 1(frontCheck[str])
            // frontCheck[str] 은 "banana"의 3번째 인덱스인 a를 키값으로 하는 value값(=1)
            frontCheck[str] = idx // value 값 갱신
            return frontDistance
        }
        else{
            // 없을경우 해당 idx로 처음 갱신
            frontCheck[str] = idx 
            return -1
        } // {b: 1, a: 1, n: 1}
    })

solution("banana")

객체 key값 동적 할당

let newAge = "age"
let obj = {}
obj.newAge = 1
// { age : 1 } 을 기대했지만
// { newAge : 1 } 가 나옴
  • 🔽 대괄호 표기법으로 해결 🔽
let newAge = "age"
let obj = {}
obj[newAge] = 1
// { age : 1 }
profile
호기심 많은 귀차니즘의 공부 일기

0개의 댓글