중복이 없는가: 문자열이 주어졌을 때, 이 문자열에 같은 문자가 중복되어 등장하는지 확인하는 알고리즘을 작성하라 자료구조를 추가로 사용하지 않고 풀 수 있는 알고리즘 또한 고민하라.
set을 이용해서 해결할 수 있다.
def has_duplicate_chars(s):
seen_chars = set()
for char in s:
if char in seen_chars:
return True
seen_chars.add(char)
return False
# 예시
input_str = "abcdefg"
print(has_duplicate_chars(input_str)) # 출력: False
input_str = "hello"
print(has_duplicate_chars(input_str)) # 출력: True
이렇게 구현할 경우 시간복잡도는 O(n) 이다.
자료구조를 사용하지 않고 문제를 해결하려면
버블정렬 하는 것 처럼 한 글자씩 해서 순차적으로 같은 글자가 있는지 검사 하면 된다. 이 때 시간복잡도는 O(n^2) 이다.
아니면 정렬을 시키고 그 이후에 인접한 문자를 검사하는 방법도 있다.
이렇게 하면 시간복잡도를 O(n log n) 로 낮출 수 있다.
'스터디-공부 > 알고리즘' 카테고리의 다른 글
정렬되어있지 않은 연결리스트의 중복 없애기 (0) | 2023.08.23 |
---|---|
문자열 회전 (0) | 2023.08.22 |
행렬 90도 회전 (0) | 2023.08.21 |
문자열 매칭 수 계산 (0) | 2023.08.19 |
문자열에 들어 있는 모든 공백을 '%20'으로 바꿔 주는 메소드를 작성하라. (0) | 2023.08.18 |
댓글