[프로그래머스] 가장 가까운 같은 글자
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;
});
};