프로그래머스 | 문자열 다루기 기본 | Kotlin

2024. 1. 9. 09:36· 코딩테스트

https://school.programmers.co.kr/learn/courses/30/lessons/12918

 

문자열의 요소가 숫자인지 어떻게 판별하는 걸까

is !is 로 판별하려고 했더니 문자가 들어가있는 문자열을 Int 로 변환하면 NumberFormatException 에러가 뜬다.

어떻게 하는지 모르겠다!!

힌트를 슬쩍 봤는데 정규표현식을 사용한단다.

저번에 가볍게 찾아봤을 때 입력값 조건에 사용하는 것만 봤는데 알고리즘에 쓰일 수 있다는게 이런거였구나..

정규표현식으로 어떻게 하는지 찾기 전에

NumberFormatException 을 처리해보려고 수업에서 배운 try catch 를 써봤다. 

 

내 풀이

class Solution {
    fun solution(s: String): Boolean {
        var answer = true
        val len = s.length
        try{val a = s.toInt()
        }catch(e: NumberFormatException){
            return false
        }
        val aa = s.toInt()
        if ((len == 4 || len == 6) && aa is Int ) answer = true else answer = false 
        return answer
    }

생긴건 더러운데 통과해서 정답인정됐다 😂

 

 

 

 

다른 사람 풀이 1

class Solution {
    fun solution(s: String) = (s.length == 4 || s.length == 6) && s.toIntOrNull() != null
}

.toIntOrNull()

평소에 문자열을 정수형으로 변환시켜주기 위해서 사용했던 toInt()

이때 위에서 나왔던 것처럼 문자열에 'a'와 같은 문자가 들어있어 정수형으로 변환이 안될 때는 NumberFormatException 에러가 발생했다.

이 경우 toIntOrNull() 함수를 사용하면 정수형 변환이 불가능한 문자열은 Null 로 반환한다.

그래서 s 를 변환했을 때 값이 Null이 아니면 true 로 조건을 줘서 답을 만들었다. 정말 간단하다 🥲🥲

 

 

다른 사람 풀이 2

class Solution {
    fun solution(s: String): Boolean 
    {
        val length = s.filter { it.isDigit() }.length
        return (length == 4 || length == 6) && length == s.length
    }
}

.isDigit()

s의 요소 하나하나를 filter를 통해 접근하고 각각을 isDigit() 함수로 숫자인지 판별해서 숫자면 true, 아니면 false 를 반환한다.

궁금해서 찍어봤다.

'a234' 의 길이가 3으로 나온다.

 

 

다른 사람 풀이 3

class Solution {
    fun solution(s: String): Boolean {
       val regex ="[0-9]{4}".toRegex()
    val regex2 = "[0-9]{6}".toRegex()
    return (s.matches(regex) || s.matches(regex2))
    }
}

[0-9]{4}

: 0부터 9까지의 숫자가 4번 연속으로 나와야 함

 

[ ]

: 안에 들어가는 문자들 중 어느 하나와 일치하면 된다.

 

{ }

: 특정 패턴이 몇 번 반복되어야 하는지 나타낸다.

 

.toRegex()

: 문자열을 정규식 객체로 변환한다.

 

.matches(regex)

: 앞의 문자열이 정규식 패턴 regex 와 일치하는지 확인한다.

'코딩테스트' 카테고리의 다른 글

프로그래머스 | 행렬의 덧셈 | Kotlin | 다시풀기++  (0) 2024.01.16
프로그래머스 | 직사각형 별찍기 | Kotlin  (1) 2024.01.11
프로그래머스 | 부족한 금액 계산하기 | Kotlin  (1) 2024.01.06
프로그래머스 | 문자열 내림차순으로 배치하기 | Kotlin  (0) 2024.01.05
프로그래머스 | 약수의 개수와 덧셈 | Kotlin  (2) 2024.01.05
'코딩테스트' 카테고리의 다른 글
  • 프로그래머스 | 행렬의 덧셈 | Kotlin | 다시풀기++
  • 프로그래머스 | 직사각형 별찍기 | Kotlin
  • 프로그래머스 | 부족한 금액 계산하기 | Kotlin
  • 프로그래머스 | 문자열 내림차순으로 배치하기 | Kotlin
다시은
다시은
🔥
다시은
재은로그
다시은
전체
오늘
어제
  • 분류 전체보기 (127)
    • 코딩테스트 (40)
    • Language (2)
      • JAVA (2)
      • Kotlin (0)
      • TypeScript (0)
    • SQL (1)
    • 인프라 (1)
    • 왕초보일지 (77)
    • 회고 (4)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • googleapis
  • Kotlin
  • 스프레드시트
  • SQL문법
  • mysql
  • 문자열변환
  • sql

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
다시은
프로그래머스 | 문자열 다루기 기본 | Kotlin
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.