https://school.programmers.co.kr/learn/courses/30/lessons/142086
1. 문제에 대한 이해
- 우리가 풀어야 할 문제는 무엇인가?
정의된 연산을 수행하는 함수 solution을 완성하라 - 주어진 자료는 무엇인가?
문자열 s - 조건은 무엇인가?
예를 들어, s="banana"라고 할 때, 각 글자들을 왼쪽부터 오른쪽으로 읽어 나가면서 다음과 같이 진행할 수 있습니다.
- b는 처음 나왔기 때문에 자신의 앞에 같은 글자가 없습니다. 이는 -1로 표현합니다.
- a는 처음 나왔기 때문에 자신의 앞에 같은 글자가 없습니다. 이는 -1로 표현합니다.
- n은 처음 나왔기 때문에 자신의 앞에 같은 글자가 없습니다. 이는 -1로 표현합니다.
- a는 자신보다 두 칸 앞에 a가 있습니다. 이는 2로 표현합니다.
- n도 자신보다 두 칸 앞에 n이 있습니다. 이는 2로 표현합니다.
- a는 자신보다 두 칸, 네 칸 앞에 a가 있습니다. 이 중 가까운 것은 두 칸 앞이고, 이는 2로 표현합니다.
따라서 최종 결과물은 [-1, -1, -1, 2, 2, 2]가 됩니다.
2. 계획
- s를 순회하면서 빈 배열에 알파벳을 넣는다.
- s[i]가 빈 배열에 이미 있다면 i - 배열에서 s[i]의 마지막 인덱스의 값을 새로운 배열에 넣는다.
- s[i]가 빈 배열에 없다면 -1을 넣는다.
- 이를 리턴한다.
3. 실행
const solution = (s) => {
let index = [];
let alphabet = [];
for (let i = 0; i < s.length; i++) {
if (alphabet.includes(s[i])) {
index.push(i - alphabet.lastIndexOf(s[i]))
} else {
index.push(-1)
}
alphabet.push(s[i]);
}
return index;
};
test('solution', () => {
expect(solution("banana")).toEqual([-1, -1, -1, 2, 2, 2]);
});
'코테연습' 카테고리의 다른 글
178. 햄버거 만들기 Javascript (0) | 2023.01.20 |
---|---|
177. 콜라문제 Javascript (0) | 2023.01.20 |
176. 과일장수 Javascript (0) | 2023.01.18 |
175. 스킬트리 Javascript (0) | 2023.01.09 |
174. 2xn 타일링 (1) | 2023.01.09 |
댓글