티스토리 뷰

https://www.acmicpc.net/problem/11478

 

11478번: 서로 다른 부분 문자열의 개수

첫째 줄에 문자열 S가 주어진다. S는 알파벳 소문자로만 이루어져 있고, 길이는 1,000 이하이다.

www.acmicpc.net

 

 

 

 

👩‍💻문제 이해

중복되는 값은 허용하지 않기 때문에 set 자료형을 사용한다.

 

 

👩‍💻set() 자료형과 반복문 사용  : 성공🌈

s = input()
res = set()

for i in range(len(s)):
  res.add(s[i])
res.add(s)
for i in range(1, len(s)-1):
  for j in range(len(s)-i):
    res.add(s[j:j+i+1])
print(len(res))

 

 

s = input()
res = set()

for i in range(len(s)):
  res.add(s[i])
  # 1자리 문자 추가
  
res.add(s)
# 전체 문자열 추가

for i in range(1, len(s)-1):
  for j in range(len(s)-i):
    res.add(s[j:j+i+1])
	# 2자리 ~ len(s)-1 자리 까지 문자열 추가
    
print(len(res))

 

 

👩‍💻반복문 하나로 모든 경우의 수 표현 🌈

s = input()
res = set() # set 자료 구조를 통해 중복을 제거

# 반복문을 통해 부분 문자열을 찾는다.
for i in range(len(s)):
    for j in range(len(s) + 1):
        # 부분 문자열이 있으면 temp에 저장
        if s[i:j]:
            res.add("".join(s[i:j]))

# temp의 길이를 출력
print(len(res))

 

댓글
최근에 올라온 글
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Total
Today
Yesterday