알고리즘 문제 풀기(프로그래머스)
https://github.com/hoinlee-moi/Algorithm
JS기본문법 다시 공부
https://github.com/hoinlee-moi/ModernJS
React 강의 듣기
https://github.com/hoinlee-moi/React_prac
일과 공부를 같이 한다는 게 참 쉬운 일이 아니긴 하다
어제는 공부를 거의 못했고 그러다보니 TIL 작성도 안한 게 쪼끔 아쉽지만 그래도 매일 30분 이상 하기는 지켰으니 다행이다
오늘 알고리즘
가장 가까운 같은 글자
예전에 배웠던 Map을 활용해 봤다.
function solution(s) {
const map = new Map();
let answer = [];
for(let i=0; i<=s.length-1; i++){
if(map.get(s[i])>=0){
answer.push(i-map.get(s[i]))
}else{
answer.push(-1)
}
map.set(s[i],i)
}
return answer;
}
Map
을 생성한다.answer
를 선언하고 주어진 문자열 s
를 반복문 for
를 이용해 돌린다.map
안에 문자와 인덱스랄 key
,value
로 넣는다.map
안에 저장해둔 문자(객체)가 있다면 answer
안에 인덱스(i
)에서 객체의 value
를 뺀 값을 넣는다다른 사람 풀이를 보니 전부 객체를 이용했는데 객체는 Map을 이용할 수 있으니 거기서 거기 아닐까 싶다.
저번에 배웠던 Map을 활용할 수 있어서 좋았다
하지만 맨 처음 풀이할 땐 익숙치 않아서인지 살짝 버벅 거려서 아래와 같은 코드가 나왔는데 리팩토링 시켜 위와 같이 만들 수 있어서 다행이다.
이전 코드
function solution(s) {
const map = new Map();
let answer = [];
s.split("").forEach((v,i)=>{
if(map.get(v)>=0){
answer.push(i-map.get(v))
map.set(v,i)
}else{
map.set(v,i)
answer.push(-1)
}
})
return answer;
}