Where who wants to meet someone
백준 Swift [11478] 서로 다른 부분 문자열의 개수 본문
728x90
난이도
실버 III
문제
https://www.acmicpc.net/problem/11478
내 답안
let input = readLine()!.map { $0 }
var stringSet = Set<String>()
for i in 0..<input.count {
var string = ""
for j in i..<input.count {
string += String(input[j])
stringSet.insert(string)
}
}
print(stringSet.count)
- 각각의 글자를 숫자를 늘려 Set에 저장하면 중복된 값이 제거되기에 그 방식을 사용
- index를 사용하는 방식을 고려해 for문을 썼지만, 1글자~5글자 하나씩만 저장이 되는 것을 보고 규칙을 찾으려 하였음
예제를 보니 한 글자는 글자 수만큼, 글자수가 늘어날 수록 개수는 1씩 감소되는 것을 확인하였고
2중 for문을 사용하여 첫 번째 for문의 i는 글자 수, 두 번째 for문의 j는 인덱스로 하여 문자열을 추출하였다 - 하지만 이 역시도 이전 인덱스의 문자열은 빠지게 되기에 string을 첫 번째 for문에 넣어 글자 수가 바뀔 때마다 초기화가 되게 하고, 거기에 글자를 추가하여 사용할 수 있도록 했다.
'백준 알고리즘 문제 기록 > 집합과 맵' 카테고리의 다른 글
백준 Swift [1269] 대칭 차집합 (0) | 2023.08.11 |
---|---|
백준 Swift [1764] 듣보잡 (0) | 2023.08.11 |
백준 Swift [10816] 숫자 카드 2 (0) | 2023.08.11 |
백준 Swift [1620] 나는야 포켓몬 마스터 이다솜 (0) | 2023.08.11 |
백준 Swift [7785] 회사에 있는 사람 (0) | 2023.08.08 |