728x90
이 문제는 사실상 모르겠어서 검색하여 풀었다. 그냥 논리적 흐름만으로는 풀 수 없다는 것을 깨달았기에...
덕분에 asciiValue, UnicodeScalar 등을 사용해 볼 수 있었다.
이 문제를 풀면서 생각한 논리적 흐름은
- 처음 문제를 풀때는 a...z 까지 집합을 하나 만들어 놓고
- 입력받은 값 value의 원소와 a...z 집합의 원소를 한번씩 비교해서 값이 같지 않으면 -1을 출력하고
- 값이 같으면 몇번째 value 원소였는지를 확인하여 그 값을 반영한다
- 이렇게 생각을 했지만 막상 비교하려니 문자의 값을 코드로 변환하는 법을 모르겠어서 찾다가 다른 방식을 발견했다
- a...z 까지 for 문으로 바로 범위를 만들어주고 입력받은 value 안에 a...z 범위안의 UnicodeScalar가 동일하게 존재하는지 확인하고 있다면 그것의 위치를 index로 바로 받는다.
- 그 외엔 -1을 출력한다.
index라는 단순한 호출형태가 존재하고 있는데 직접 집합 내 원소의 위치를 num += 1 이런식으로 구하려고 생각했던 것이 아직도 Swift 초짜구나 라는 생각이 들게 했다.
* 10809번
let value = Array(readLine()!)
for i in Character("a").asciiValue!...Character("z").asciiValue! {
var char = Character(UnicodeScalar(i))
if value.contains(char){
print("\(s.index(of: char)!)",terminator: " ")
} else {
print("-1", terminator: " ")
}
}
정리(Today I Learned)
- asciiValue, unicodeScalar, index 등 Swift가 자체적으로 내포하고 있는 기능을 기억하자!
'TIL > 알고리즘 공부' 카테고리의 다른 글
백준 1157번 Swift 알고리즘 연습 (0) | 2022.08.16 |
---|---|
백준 2675번 Swift 알고리즘 연습 (0) | 2022.08.12 |
백준 11720번 Swift 알고리즘 연습 (0) | 2022.08.09 |
백준 11654번 Swift 알고리즘 연습 (0) | 2022.08.09 |
백준 1065번 Swift 알고리즘 연습 (0) | 2022.08.04 |