Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 19 additions & 0 deletions 221209/solution/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# 문제

- [가장 가까운 같은 글자](https://school.programmers.co.kr/learn/courses/30/lessons/133502)

## 1. 원하는 것
- s의 각 위치마다 자신보다 앞에 나왔으면서, 자신과 가장 가까운 곳에 있는 같은 글자를 찾아라.

## 2. 아는 것
- 문자열 s

## 3. 조건
- 글자들을 왼쪽부터 오른쪽을 읽어 나가면서 진행한다.
- 그러니까 앞에 이미 나온 글자가 나왔을 때, 그 둘의 간격을 구한다.
- 예를 들면 s="banana"일 때, 처음 나왔기때문에 자신의 앞에 같은 글자가 없다. -1로 표현.
- 그 뒤에 나온 두번째 a는 두칸 앞에 a가 있기 때문에 2로 표현한다.
- 마지막 a도 두번째로 나온 a가 전에 나왔으면서 더 가까이 있기 때문에 그걸 기준으로 순자를 센다.
- 그렇게 된다면 결과물은 [-1, -1, -1, 2, 2, 2]가 된다.

## 4. 계획
27 changes: 27 additions & 0 deletions 221209/solution/Solution.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
function solution(s) {
const preWords = [];
const result = [];

for (let i = 0; i < s.length; i += 1) {
let count = 0;

if (!preWords.includes(s[i])) {
preWords.push(s[i]);
result.push(-1);
continue;
}

for (let j = i - 1; j >= 0; j--) {
count++;
if (s[i] === s[j]) {
result.push(count);
break;
}
}
}
return result;
}

test('solution', () => {
expect(solution('banana')).toEqual([-1, -1, -1, 2, 2, 2]);
});