✅ 이번 시간에는 프로그래머스에서 푼 문제 하나를 그냥 올려두려고 느낀점도 많음!
✅ 문자열에서 index참조하는게 매번 엄청나게 고민인데, 이번에 확실하게 정리해서 좋았어.
다른 사람의 코드도 꼭 확인해보자.
🔶 문자열에서 index 찾는 방법 프로세스
index찾아서 접근해야 함으로 유의하기
//
// main.swift
// algorithm
//
// Created by Hamlit Jason on 2021/10/28.
//
/*
카카오 블라인드 - 숫자 문자열과 영단어
https://programmers.co.kr/learn/courses/30/lessons/81301
*/
import Foundation
func solution(_ s:String) -> Int {
var answer = "" // String으로 해두고 마지막에 Int로 리턴
let first = s.startIndex // 첫 인덱스
var i = 0 // offset
while i < s.count { // i의 값이 s.count보다 크면 종료
let k = s.index(first, offsetBy: i) // index
let str = s[k] // 인덱스 참조해서 문자 넣음
if str.isNumber {
answer.append(str)
i = i + 1
} else if s[k] == "o" { // 1
answer.append("1")
i = i + 3 // 문자 길이 갯수만큼 더해야 해
} else if s[k] == "t" { // 2 or 3
let next = s[s.index(first, offsetBy: i+1)]
if next == "w" {
answer.append("2")
i = i + 3
} else {
answer.append("3")
i = i + 5
}
} else if s[k] == "f" {
let next = s[s.index(first, offsetBy: i+1)]
if next == "o" {
answer.append("4")
i = i + 4
} else {
answer.append("5")
i = i + 4
}
} else if s[k] == "s" {
let next = s[s.index(first, offsetBy: i+1)]
if next == "i" {
answer.append("6")
i = i + 3
} else {
answer.append("7")
i = i + 5
}
} else if s[k] == "e" {
answer.append("8")
i = i + 5
} else if s[k] == "n" {
answer.append("9")
i = i + 4
} else {
answer.append("0")
i = i + 4
}
}
return Int(answer)!
}
print(solution("one4seveneighttwo"))
✅ 다른 사람의 코드
import Foundation
func solution(_ s:String) -> Int {
var s = s
var answer = s.replacingOccurrences(of: "zero", with: "0")
.replacingOccurrences(of: "one", with: "1")
.replacingOccurrences(of: "two", with: "2")
.replacingOccurrences(of: "three", with: "3")
.replacingOccurrences(of: "four", with: "4")
.replacingOccurrences(of: "five", with: "5")
.replacingOccurrences(of: "six", with: "6")
.replacingOccurrences(of: "seven", with: "7")
.replacingOccurrences(of: "eight", with: "8")
.replacingOccurrences(of: "nine", with: "9")
return Int(answer)!
}
이 코드 상당히 신선했다..!
import Foundation
func solution(_ s:String) -> Int {
let arr = ["zero","one","two","three","four","five","six","seven","eight","nine"]
var str = s
for i in 0..<arr.count {
str = str.replacingOccurrences(of: arr[i], with: String(i))
}
return Int(str)!
}
이 코드도...!
다른 사람의 코드도 보면서 배우도록 하자!
'알고리즘 문제 풀이' 카테고리의 다른 글
[프로그래머스] 60057 문자열 압축 Swift (0) | 2021.11.15 |
---|---|
[프로그래머스] Swift 위장 - 42578 (0) | 2021.11.03 |
[프로그래머스] 조이스틱 Swift (Greedy) (0) | 2021.08.08 |
[프로그래머스] 타겟넘버 Swift (DFS) (0) | 2021.08.08 |
Swift5 코테 공부 사전설정 (0) | 2021.08.06 |