View

문자열을 정수로 바꾸기(알고리즘)

제롱구리 2024. 3. 5. 22:24
728x90

오늘 할것

오늘은 간단히 알고지즘 문제를 풀어보려고한다.

오늘 풀어볼 문제

금일 풀어볼 문제는 문자열을 정수로 바꾸기라는 프로그래머스에 있는 매우 간단한 문제이다.

아래 사진은 문제이다.



아래 코드는 코틀린의 정답 코드이다.

 class Solution {
    fun solution(s: String): Int {
        val answer = s.toInt()
        return answer
    }
}

여기서 말하는 toInt()는 형변환이다. 그렇다 말 그대로 String 타입을 모양 그대로 Int 으로 바꿔준다는 것이다.

여기서 조금 더 진도를 나아가 보자 우리는 코틀린을 공부하기 때문에
Char 타입을 모양 그대로 Int으로 바꾸기 위해서 toInt()를 쓰면 과연 정상 작동할까?

정답은 일단 작동은 하지만 다른 값이 나온다. 이다.!!!
이게 무슨말일까?

안드로이드 스튜디오를 키고 간단한 예시를 들어서 보겠다. 아래 사진이 그 예제이다.



아래 사진처럼 밑줄이 그어지며, deprecated라는 단어가 보일것이다. 이것은 간단히 말하면 언젠가 다음 안드로이드 버전이 올라갈 때 사라질 거야!! 잠깐만 쓰게 해줄게 라는 것이다. 그렇다면 왜 해당 함수가 deprecated되는 것일까

바로 아스키코드 때문이다. 자바를 해본사람들은 쉽게 이해할 수 있을것이다. 자바에 문자타입의 변수를 Int형으로 타입변환하게 되면 아스키코드로 변환된다. 그럼 아스키코드는 무엇일까?


아스키코드란 -> 미국ANSI(미국 국가표준 협회)에서 표준화한 정보 교환용 7비트 부호체계이다.
자세한 내용은 찾아보기를 권한다. 그래도 간단히 말하면 각각의 모든 문자에 특정 숫자가 지정되어 있는 것이다. (동전의 앞 뒤면처럼)

자 다시 돌아가서 정리를 해보자면 문자타입을 toInt()해서 아키코드가 나오는 것은 원칙적으로 맞는데
코틀린을 사용하는 사람들이 문자열은 되는데 문자 안되기 때문에 헷갈려하고 많은 실수를 하다보니 그냥 코틀린에서 deprecated하는 것이다.

Char to Int

그렇다면 어떻게 해야 문자를 있는 그대로 Int형으로 바꿀 수 있을까?

여기에는 3가지 방법이 있다.

  • Char를 String으로 변환한 후 toInt() 사용하기

    fun main(){
      val char = '1'
      print(char.toString().toInt()) // 1출력
    }
  • Character.getNumericValue(Char: Char) 사용하기

    fun main(){
      val char = '1'
      print(Character.getNumericValue(char) // 1출력
    }
  • ASCII 코드 사용하기

    fun main(){
      val char = '1'
         val int = char.code = '0'.code
         print(int)// 1출력
    }

'TIL' 카테고리의 다른 글

개발자 하루  (2) 2024.03.11
알고리즘(정수 내림차순으로 배치하기)  (0) 2024.03.08
코틀린 for문 사용 예제  (0) 2024.03.04
RecyclerView  (2) 2024.02.28
앱 아이콘 설정하기  (0) 2024.02.23
Share Link
reply
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30