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

2022. 12. 29. 16:56기록/Programmers

    목차

문제 링크

https://school.programmers.co.kr/learn/courses/30/lessons/142086

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


나의 문제 풀이

function solution(s) {
    var answer = [-1];
    
    for (let i = 1; i < s.length; i++)  {
        for (let j = i - 1; j >= 0; j--) {
            if (s[i] === s[j]) {
                answer.push(i - j);
                break;
            } else if (j === 0) {
                answer.push(-1);
                break;
            }
        }
    }
    
    return answer;
}
  • 주어진 문자열 s의 0번째 문자는 앞의 문자와 비교할 수없음
    • 미리 정답 배열에 -1을 넣어놓음
  • 1부터 s의 길이 이전까지 1씩 증가하면서 반복
    • i - 1 부터 0까지 1씩 감소하면서 반복 (i의 앞의 문자와 비교)
    • 두 문자가 같을 경우
      • 정답 변수에 i - j (i와 j의 거리) 를 넣고 빠져나감
    • j가 0일 경우
      • 더 이상 비교할 앞의 문자가 없음
      • 정답 변수에 -1을 넣고 빠져나감

다른 사람의 문제 풀이

function solution(s) {
    const hash = {};

    return [...s].map((v, i) => {
        let result = hash[v] !== undefined ? i - hash[v] : -1;
        hash[v] = i;
        return result;
    });
}
const solution = (s) => {
  return [...s].map((char, i) => {
    const count = s.slice(0, i).lastIndexOf(char);
    return count < 0 ? count : i - count;
  });
};