[프로그래머스/Kotlin]Level1 - 문자열을 정수로 바꾸기

2021. 3. 17. 15:01프로그래머스/Kotlin | Level1

728x90
반응형
 

코딩테스트 연습 - 문자열을 정수로 바꾸기

문자열 s를 숫자로 변환한 결과를 반환하는 함수, solution을 완성하세요. 제한 조건 s의 길이는 1 이상 5이하입니다. s의 맨앞에는 부호(+, -)가 올 수 있습니다. s는 부호와 숫자로만 이루어져있습니

programmers.co.kr

문제 설명
문자열 s를 숫자로 변환한 결과를 반환하는 함수, solution을 완성하세요.
제한 조건
  • S의 길이는 1 이상 5 이하입니다.
  • S의 맨 앞에는 부호(+,-)가 올 수 있습니다.
  • S는 부호와 숫자로만 이루어져 있습니다.
  • S는 “0”으로 시작하지 않습니다.
입출력 예
예를 들어 str이 “1234”이면 1234를 반환하고, “-1234”이면 -1234를 반환
Str은 부호(+,-)와 숫자로만 구성되어 있고, 잘못된 값이 입력되는 경우는 없음

나의 풀이

String을 바로 Int로 바꿔주는 내장 함수 사용

Class Solution {
	public int solution(String s) {
		return Integer.parseInt(s);
	}
}

 

Kotlin1 코드 정리

class Solution {
    fun solution(s: String) = s.toInt()
}

내 풀이법과 방법은 같지만, 나는 바로 return을 한 반면 이 소스는 함수를 만들어 리턴함.

 

Kotlin2 코드 정리

1. 입력받은 문자열 s의 첫 글자가 -면 -1을 대입하고, 아니면 1을 대입함.

2. 문자열 s가 숫자이면 int()로 변경 후 sign에 곱함

class Solution {
	fun solution(s: String) : Int { // -면 *(-1) : 음수, 아니면 *1 : 양수
		val sign:Int = if(s.first() == '-') -1 else 1
		return (s.filter { it. isDigit() }.toInt())*sign
	}
}

 

* isDigit() : 숫자 판단

* filter : 리스트 중에서 조건에 맞는 값만 리턴

어차피 .toInt()를 쓸거면 왜 저렇게 복잡하게 돌아갔을까?
-1과 1 여부는 toInt()가 알아서 해줄텐데...

s.filter { it. isDigit() } 이 부분은 숫자가 아닌 문자가 들어올 경우 걸러내기 좋아 괜찮은 것 같다.
근데 이 줄만 있어도 괜찮을 것 같다.

 

728x90
반응형