sean.jin
Spark Code Blog
sean.jin
전체 방문자
오늘
어제
  • 분류 전체보기
    • 개발공부
      • Kotlin
      • LeetCode
      • Algorithm
      • React
    • 주식차트
    • 책리뷰
    • 유틸리티

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 초보
  • 책추천
  • 트리플 위칭데이
  • 쿼드러플위칭데이
  • 주식책리뷰
  • 책
  • 부의 추월차선
  • 경제
  • 오
  • 자기개발
  • 변동성
  • 아빠와 딸의 주식투자 레슨
  • 주식입문자
  • 주식투자
  • 네마녀의날
  • 책리뷰

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
sean.jin

Spark Code Blog

[Kotlin] String, Int 순서 뒤집기 - LeetCode: Reverse Integer 풀이
개발공부/LeetCode

[Kotlin] String, Int 순서 뒤집기 - LeetCode: Reverse Integer 풀이

2021. 6. 5. 14:14
반응형

문제

  • Given a signed 32-bit integer x, return x with its digits reversed. If reversing x causes the value to go outside the signed 32-bit integer range [-231, 231 - 1], then return 0.
  • Assume the environment does not allow you to store 64-bit integers (signed or unsigned).

 

예시

  • x를 넣으면 reversed된 값을 반환하게 만들어야합니다. 

풀이

1. String으로 변환후 순서 뒤집기

  • 저는 integer을 string으로 바꿔서 char 하나씩 접근하여 보내려했는데
//오답
fun reverse(x: Int): Int {
       val change = "$x"
        val reversed = change.reversed()
        var str = StringBuilder()
        for (i in reversed.indices){ //i in 0..2
        if(reversed[i] == '-'){
            str.insert(0,'-') //가장 앞 포지션에 -를 넣는다.
        } else if (reversed[i] == '0' && i == reversed.length-1)
            str.insert(0,"")//0이라면

        else str.append(reversed[i]) //아니라면 뒤에서부터 넣는다.
        }
    return str.toString().toInt()
 }
  • 위 예시 example 3번 120을 제 식으로 대입 했을때 0이 제거된 21 이 아닌 012가되어서 문제가 생겼습니다. (이문제에서는 0이 없어야합니다. 모든 값을 string으로 인식하기 때문에 이렇게 답이 나오게되 었습니다.)
  • 그렇게 다른 답을 찾던 도중 더 간단한 풀이를 찾았습니다. 

2. Int 순서 뒤집기

class Solutions {
        fun reverse(x: Int): Int {
            var y = x.toLong()
            var result: Long = 0
            while (y != 0.toLong()) { //이 반복문이 reverse시켜줍니다.
                result = result * 10 + y % 10
                y = y / 10
            }
            return if (Int.MAX_VALUE < result || Int.MIN_VALUE > result) 0 else result.toInt()
        }
}
  • while 문을 풀이하면 x = 123
  • result = 0 x 10 + 123%10 = 3, y = 12
  • result = 3 x 10 + 12%10 = 32, y = 1
  • result = 320 + 1%10 = 321 y = 0 y가 0이되어서 while이 멈춥니다. 
  • 그러면 result 는 321로 되고 이값을 리턴하게 됩니다. 
반응형

'개발공부 > LeetCode' 카테고리의 다른 글

[Kotlin] LeetCode: Intersection of Two Arrays IISolution 풀이  (0) 2021.06.11
[Kotlin] Array 에 같은 숫자 찾기, HashMap활용 풀이 - LeetCode: Single Number  (0) 2021.06.10
[Kotlin] Array에 반복되는 아이템 삭제하기 - ArrayList distinct - LeetCode: Contains Duplicate - 풀이 과정  (0) 2021.06.08
[Kotlin] LeetCode - Best Time to Buy and Sell Stock IISolution - 풀이과정  (0) 2021.06.05
[Kotlin] LeetCode 1. Two Sum 풀이 - for index, indices 활용  (0) 2021.06.04
    '개발공부/LeetCode' 카테고리의 다른 글
    • [Kotlin] Array 에 같은 숫자 찾기, HashMap활용 풀이 - LeetCode: Single Number
    • [Kotlin] Array에 반복되는 아이템 삭제하기 - ArrayList distinct - LeetCode: Contains Duplicate - 풀이 과정
    • [Kotlin] LeetCode - Best Time to Buy and Sell Stock IISolution - 풀이과정
    • [Kotlin] LeetCode 1. Two Sum 풀이 - for index, indices 활용
    sean.jin
    sean.jin
    앱개발, 알고리즘, JS, Kotlin, 미국 취업준비

    티스토리툴바