Skip to content

Commit 7bfd1bd

Browse files
committed
[level 1] Title: 가장 가까운 같은 글자, Time: 2.92 ms, Memory: 88.2 MB -BaekjoonHub
1 parent fe6d7ec commit 7bfd1bd

2 files changed

Lines changed: 102 additions & 0 deletions

File tree

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
# [level 1] 가장 가까운 같은 글자 - 142086
2+
3+
[문제 링크](https://school.programmers.co.kr/learn/courses/30/lessons/142086)
4+
5+
### 성능 요약
6+
7+
메모리: 88.2 MB, 시간: 2.92 ms
8+
9+
### 구분
10+
11+
코딩테스트 연습 > 연습문제
12+
13+
### 채점결과
14+
15+
정확성: 100.0<br/>합계: 100.0 / 100.0
16+
17+
### 제출 일자
18+
19+
2024년 04월 22일 20:53:01
20+
21+
### 문제 설명
22+
23+
<p>문자열 <code>s</code>가&nbsp;주어졌을 때, <code>s</code>의 각 위치마다 자신보다 앞에 나왔으면서, 자신과 가장 가까운 곳에 있는 같은 글자가 어디 있는지 알고 싶습니다.<br>
24+
예를 들어, <code>s</code>="banana"라고 할 때,&nbsp; 각 글자들을 왼쪽부터 오른쪽으로 읽어 나가면서&nbsp;다음과 같이 진행할 수 있습니다.</p>
25+
26+
<ul>
27+
<li>b는 처음 나왔기 때문에 자신의 앞에 같은 글자가 없습니다. 이는 -1로 표현합니다.</li>
28+
<li>a는 처음 나왔기 때문에 자신의 앞에 같은 글자가 없습니다. 이는 -1로 표현합니다.</li>
29+
<li>n은 처음 나왔기 때문에 자신의 앞에 같은 글자가 없습니다. 이는 -1로 표현합니다.</li>
30+
<li>a는 자신보다 두 칸 앞에 a가 있습니다. 이는 2로 표현합니다.</li>
31+
<li>n도&nbsp;자신보다 두 칸 앞에 n이 있습니다. 이는 2로 표현합니다.</li>
32+
<li>a는 자신보다 두 칸, 네 칸 앞에 a가 있습니다. 이 중 가까운 것은 두 칸 앞이고, 이는 2로 표현합니다.</li>
33+
</ul>
34+
35+
<p>따라서 최종 결과물은 [-1, -1, -1, 2, 2, 2]가 됩니다.</p>
36+
37+
<p>문자열 <code>s</code>이 주어질 때, 위와 같이 정의된 연산을 수행하는 함수 solution을 완성해주세요.</p>
38+
39+
<hr>
40+
41+
<h5>제한사항</h5>
42+
43+
<ul>
44+
<li>1 ≤ <code>s</code>의 길이 ≤ 10,000
45+
46+
<ul>
47+
<li><code>s</code>은 영어 소문자로만 이루어져 있습니다.</li>
48+
</ul></li>
49+
</ul>
50+
51+
<hr>
52+
53+
<h5>입출력 예</h5>
54+
<table class="table">
55+
<thead><tr>
56+
<th>s</th>
57+
<th>result</th>
58+
</tr>
59+
</thead>
60+
<tbody><tr>
61+
<td>"banana"</td>
62+
<td>[-1, -1, -1, 2, 2, 2]</td>
63+
</tr>
64+
<tr>
65+
<td>"foobar"</td>
66+
<td>[-1, -1, 1, -1, -1, -1]</td>
67+
</tr>
68+
</tbody>
69+
</table>
70+
<hr>
71+
72+
<h5>입출력 예 설명</h5>
73+
74+
<p>입출력 예 #1<br>
75+
지문과 같습니다.</p>
76+
77+
<p>입출력 예 #2<br>
78+
설명 생략</p>
79+
80+
81+
> 출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
import java.util.*;
2+
3+
class Solution {
4+
public int[] solution(String s) {
5+
Map<Character, Integer> map = new HashMap<>();
6+
char[] sChar = s.toCharArray();
7+
8+
int[] A = new int[sChar.length];
9+
for (int i = 0; i < sChar.length; i++) {
10+
char c = sChar[i];
11+
Integer before = map.put(c, i);
12+
13+
if (before == null) {
14+
A[i] = -1;
15+
} else {
16+
A[i] = i - before;
17+
}
18+
}
19+
return A;
20+
}
21+
}

0 commit comments

Comments
 (0)