Codewars(알고리즘)/8Kyu

[Codewars] [8Kyu] Convert a String to a Number!

Dannian 2024. 11. 30. 15:00
반응형
 

Codewars - Achieve mastery through coding practice and developer mentorship

A coding practice website for all programming levels – Join a community of over 3 million developers and improve your coding skills in over 55 programming languages!

www.codewars.com

이번 문제는 매우 간단한 String -> Int 변경 관련 문제입니다.

심지어 조건에 적혀있는대로면 String은 무조건 들어오고, 그 값 또한 무조건 Int라고 하네요.

func stringToNumber(_ string:String) -> Int {
  return Int(string)!
}

이번 문제는 해설도 필요없지만, 변환하는 방법들을 적어보기 위해서 갖고왔습니다.

String에서 Int로 변환할 때는 해당 String(string으로 명명) 값이 정확히 정수로 들어온다는 조건 하에 다음과 같이 사용할 수 있습니다.

let returnValue = Int(string) // optional Int value

Int의 생성자 중 String을 바로 받는게 있어서 가능한데요, 문서에서 관련 내용을 찾아보겠습니다.

https://developer.apple.com/documentation/swift/int#Converting-Strings

내용에 따르면 string으로 받은 값을 optional Int로 반환해주는 생성자이네요.

생각보다 이런 Convert관련된 함수는 잘 되어있는 편입니다.

이런 optional return value들은 optional이 아닌 변수에 할당할 수 없습니다. 별다른 조치를 취하지 않으면 다음과 같은 에러가 발생하겠죠.

1. 기본값을 ?? 통해서 지정하거나

let returnValue = Int(string) ?? 0 // not optional Int value

2. !를 통해서 force-unwrap을 해주거나.

let returnValue = Int(string)! // optional Int value

 

당연히 2번 값의 경우는 강제종료가 일어날 수 있으니 주의해서 사용하셔야 합니다.

하지만 확실하게 변환에 문제가 없다 할 때는 사용할 수 있겠죠.

 

또 다른 방법은 다음의 방식이 있습니다.

let returnIntValue = (string as NSString).integerValue

아마 Objective-C 또는 초기 Swift를 사용하던 분들이라면 익숙할 NSString에 선언 되어있는 integerValue를 통해서 Int 값을 불러오는 것입니다. 이경우는 요즘은 사용하는 경우가 없을 것 같지만, 만에 하나 NSString을 다루는 경우에는 이런 방법도 있다 정도로 알고 계시면 될 것 같네요.

반응형