문제 설명
문자열 s를 숫자로 변환한 결과를 반환하는 함수, solution을 완성하세요.
제한 사항
1) s의 길이는 1 이상 5이하입니다.
2) s의 맨앞에는 부호(+, -)가 올 수 있습니다.
3) s는 부호와 숫자로만 이루어져있습니다.
4) s는 "0"으로 시작하지 않습니다.
입출력 예
예를들어 str이 "1234"이면 1234를 반환하고,
"-1234"이면 -1234를 반환하면 됩니다.
str은 부호(+,-)와 숫자로만 구성되어 있고, 잘못된 값이 입력되는 경우는 없습니다.
나의 풀이
func solution(_ s:String) -> Int {
return Int(s)!
}
알게 된 점
처음에는 ! 없이 채점하니 런타임 에러가 났었습니다.
알고보니 !를 붙이지 않았던 것이였고,
그래서 소소하게 정리하자면..
Int 구조체를 통해 초기화를 할 때 아규먼트로 String 타입의 값이 들어온다면
Optional로 리턴이 된다는 사실을 알았습니다.
그 이유는 형식에 맞지 않는 값이 들어올 경우를 대비해서인데요.
Swift 문서에서는 다음의 예시를 통해 설명하고 있습니다.
"If description is in an invalid format, or if the value it denotes in base 10 is not representable, the result is nil. For example, the following conversions result in nil:"
Int(" 100") // Includes whitespace
Int("21-50") // Invalid format
Int("ff6600") // Characters out of bounds
Int("10000000000000000000000000") // Out of range
아규먼트로 넣은 String 타입의 값이 형식을 잘 지켰다.
-> Optional<숫자>
아규먼트로 넣은 String 타입의 값이 형식을 잘 지키기 못했다.
-> nil
로 결론을 낼 수 있을 거 같습니다 !
그리고 !는 최대한 지양하는게 좋습니다.
혹시라도 nil을 언래핑 하게 된다면
프로그램이 비정상적으로 종료될 수 있기 때문인데요.
문제에서는 형식에 맞게 들어온다고 보장하였기 때문에 !를 붙였습니다 !
'Data structure & Algorithm > 프로그래머스' 카테고리의 다른 글
[프로그래머스 | Lv.1] 짝수와 홀수 (0) | 2024.03.06 |
---|---|
[프로그래머스 | Lv.1] x만큼 간격이 있는 n개의 숫자 (0) | 2024.03.06 |
[프로그래머스 | Lv.1] 나머지가 1이 되는 수 찾기 (0) | 2024.03.06 |
[프로그래머스 | Lv.1] 평균 구하기 (0) | 2024.03.05 |
[프로그래머스 | Lv.1] 약수의 합 (0) | 2024.03.05 |