2024. 3. 21. 15:43ㆍ개발자 과정/Kotlin
코딩테스트 연습 - 문자열 다루기 기본 | 프로그래머스 스쿨 (programmers.co.kr)
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이의 선택과정
1. 길이가 4나 6인 문자열만 받도록 예외처리.
2. 숫자인지 문자인지 판별하는 isDigit 함수 사용.
3. 코틀린의 언어기능을 사용하면 한줄 코드로 가능할거 같아 임의 조건 추가
문제고민
문자를 하나씩 읽어와 체크하는 것도 되겠지지만,
코드를 한줄로 끝내버리고 싶다.
그렇다면 문자열 전체에 조건을 걸 수 있는 방법이 있을까?
해결방안
.all{}
= 모든 원소가 람다식 조건에 만족하는지 체크하는 함수.
이에 합당한 기능이 무엇인지 구글링을 해보니, all이라는 함수를
사용하면 아주 좋을거 같았다. 이를 통해 한줄 코드를 성공해 내었다.
정답풀이
class Solution {
fun solution(s: String)= s.all { it.isDigit() } && ((s.length == 4) || (s.length == 6))
}
핵심로직
it.isDigit()
= 해당문자가 숫자인지, 문자인지 알아서 판별해준다.
isDigit()함수는 파이썬을 할때도, c++를 할때도, 코틀린을 하는 중에도 쓰이던
아주 활용처가 많은 함수이다.
이를통해, 복잡한 로직구현없이 문제를 쉽게 풀 수 있다.
새로 알게된 것
문자열 전체에 대한 조건을 걸고 싶을떈 .all{}을 활용하자.
원래는 for문으로 하나씩 뜯어먹었었는데, 요즘은 함수 하나로
끝낼 수 있으니 여러모로 편리한거 같다.
'개발자 과정 > Kotlin' 카테고리의 다른 글
(코딩테스트)3진법 뒤집기(진법 변환) (0) | 2024.03.26 |
---|---|
(코딩테스트)최대공약수와 최소공배수(꼬리재귀) (0) | 2024.03.26 |
(코딩테스트) 문자열 내림차순으로 배치(joinToString("")) (1) | 2024.03.20 |
(코딩테스트)콜라츠 추측 (런타임에러) (2) | 2024.03.19 |
(코딩테스트)두 정수사이의 합(OverFlow) (0) | 2024.03.15 |