문제

s라는 문자열이 주어졌을때, 한번만 나오는 문자 중 제일 왼쪽에 있는(첫번째의) 문자의 인덱스를 반환하며, 한 번만 나오는 문자가 없는 경우에는 -1을 반환하는 문제이다.
풀이
문자열을 받아서 문자 하나씩 반복하여 매칭되는 문자가 있을 때에는 문자의 수를 카운팅하게 하였고, 새로운 문자가 추가될 경우에는 1로 초기화 하여 키-값 방식의 딕셔너리로 만들었고, 이후 첫 번째로 한번만 나오는 문자의 인덱스를 반환하기 위해서 while문을 활용하여 cnt의 값이 1일 경우에 return문으로 while문을 빠져나오게 하였다.
class Solution:
def firstUniqChar(self, s: str) -> int:
cnt = {} # 문자당 count를 딕셔너리로 저장, cnt로 선언
for c in s : # 문자열의 문자 하나씩 반복문에 삽입
if c in cnt : #이미 있는 문자일 경우
cnt[c] += 1
else : # 처음 들어오는 문자일 경우
cnt[c] = 1
i = 0
while i < len(s) :
c = s[i]
if cnt[c] == 1: #처음으로 반복되지 않을 경우에
return i #return으로 while문 탈출
i += 1
return -1 #반복을 완료했음에도 count가 1인 문자가 없으면 -1 반환
'Algorithm' 카테고리의 다른 글
| [LeetCode] 649 - Dota2 Senate (0) | 2026.03.03 |
|---|---|
| [LeetCode] 155 - Min Stack (0) | 2026.03.03 |
| [LeetCode] 141 - Linked List Cycle (0) | 2026.02.23 |
| [LeetCode] 496 - Next Greater Element 1 (0) | 2026.02.23 |
| [LeetCode] 682 - Baseball Game (1) | 2026.02.23 |
