-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[level 1] Title: 가장 가까운 같은 글자, Time: 1.75 ms, Memory: 11.1 MB -Baekjo…
…onHub
- Loading branch information
Showing
2 changed files
with
91 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,81 @@ | ||
# [level 1] 가장 가까운 같은 글자 - 142086 | ||
|
||
[문제 링크](https://school.programmers.co.kr/learn/courses/30/lessons/142086) | ||
|
||
### 성능 요약 | ||
|
||
메모리: 11.1 MB, 시간: 1.75 ms | ||
|
||
### 구분 | ||
|
||
코딩테스트 연습 > 연습문제 | ||
|
||
### 채점결과 | ||
|
||
정확성: 100.0<br/>합계: 100.0 / 100.0 | ||
|
||
### 제출 일자 | ||
|
||
2024년 06월 27일 10:42:30 | ||
|
||
### 문제 설명 | ||
|
||
<p>문자열 <code>s</code>가 주어졌을 때, <code>s</code>의 각 위치마다 자신보다 앞에 나왔으면서, 자신과 가장 가까운 곳에 있는 같은 글자가 어디 있는지 알고 싶습니다.<br> | ||
예를 들어, <code>s</code>="banana"라고 할 때, 각 글자들을 왼쪽부터 오른쪽으로 읽어 나가면서 다음과 같이 진행할 수 있습니다.</p> | ||
|
||
<ul> | ||
<li>b는 처음 나왔기 때문에 자신의 앞에 같은 글자가 없습니다. 이는 -1로 표현합니다.</li> | ||
<li>a는 처음 나왔기 때문에 자신의 앞에 같은 글자가 없습니다. 이는 -1로 표현합니다.</li> | ||
<li>n은 처음 나왔기 때문에 자신의 앞에 같은 글자가 없습니다. 이는 -1로 표현합니다.</li> | ||
<li>a는 자신보다 두 칸 앞에 a가 있습니다. 이는 2로 표현합니다.</li> | ||
<li>n도 자신보다 두 칸 앞에 n이 있습니다. 이는 2로 표현합니다.</li> | ||
<li>a는 자신보다 두 칸, 네 칸 앞에 a가 있습니다. 이 중 가까운 것은 두 칸 앞이고, 이는 2로 표현합니다.</li> | ||
</ul> | ||
|
||
<p>따라서 최종 결과물은 [-1, -1, -1, 2, 2, 2]가 됩니다.</p> | ||
|
||
<p>문자열 <code>s</code>이 주어질 때, 위와 같이 정의된 연산을 수행하는 함수 solution을 완성해주세요.</p> | ||
|
||
<hr> | ||
|
||
<h5>제한사항</h5> | ||
|
||
<ul> | ||
<li>1 ≤ <code>s</code>의 길이 ≤ 10,000 | ||
|
||
<ul> | ||
<li><code>s</code>은 영어 소문자로만 이루어져 있습니다.</li> | ||
</ul></li> | ||
</ul> | ||
|
||
<hr> | ||
|
||
<h5>입출력 예</h5> | ||
<table class="table"> | ||
<thead><tr> | ||
<th>s</th> | ||
<th>result</th> | ||
</tr> | ||
</thead> | ||
<tbody><tr> | ||
<td>"banana"</td> | ||
<td>[-1, -1, -1, 2, 2, 2]</td> | ||
</tr> | ||
<tr> | ||
<td>"foobar"</td> | ||
<td>[-1, -1, 1, -1, -1, -1]</td> | ||
</tr> | ||
</tbody> | ||
</table> | ||
<hr> | ||
|
||
<h5>입출력 예 설명</h5> | ||
|
||
<p>입출력 예 #1<br> | ||
지문과 같습니다.</p> | ||
|
||
<p>입출력 예 #2<br> | ||
설명 생략</p> | ||
|
||
|
||
> 출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
def solution(s): | ||
answer=[] | ||
dic={} | ||
for i in range(len(s)): | ||
if s[i] not in dic: | ||
answer.append(-1) | ||
else: | ||
answer.append(i-dic[s[i]]) | ||
dic[s[i]] = i | ||
return answer |