728x90
조건
문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수, solution을 완성하세요. 예를 들어 s가 "a234"이면 False를 리턴하고 "1234"라면 True를 리턴하면 됩니다.( s는 길이 1 이상, 길이 8 이하인 문자열입니다, s는 영문 알파벳 대소문자 또는 0부터 9까지 숫자로 이루어져 있습니다.)
알고리즘 예상
- 문자열의 길이를 확인하는 조건문
- 문자열에 문자의 존재를 확인
초기 코드
class Solution {
fun solution(s: String): Boolean {
var answer = true
return answer
}
}코드가여기있어요
내 코드
class Solution {
fun solution(s: String): Boolean {
var answer = true
var lengthCheck = true
var charCheck = true
when (s.length){
4 -> lengthCheck = true
6 -> lengthCheck = true
else -> lengthCheck = false
}
if(s.toCharArray().all{ it.isDigit() }) charCheck = true
else charCheck = false
if(charCheck && lengthCheck) answer = true
else answer = false
return answer
}
}
처음에는 위와 같이 코드를 짰지만 코드가 길고 읽기 힘들어보여 줄여보기로 했다.
class Solution {
fun solution(s: String): Boolean = if((s.length == 4 || s.length == 6) && s.toCharArray().all { it.isDigit() }) true else false
}
if문 하나에 or과 and를 이용해 두 조건의 확인을 넣었다. 만들고 보니 코드블럭이 필요없을 것 같아 등식으로 줄여보았다.
다른 사람의 풀이
class Solution {
fun solution(s: String) = (s.length == 4 || s.length == 6) && s.toIntOrNull() != null
}
class Solution {
fun solution(s: String): Boolean
{
val length = s.filter { it.isDigit() }.length
return (length == 4 || length == 6) && length == s.length
}
}
개선점 또는 배운점
- ==은 비교연산자기 때문에 true나 false를 반환한다. 따라서 if문이 필요가 없었다.
- toIntOrNull이라는 함수를 이용해 수가 아니면 null을 반환해서 확인하는 방법을 배웠다.
개선된 코드
class Solution {
fun solution(s: String): Boolean = (s.length == 4 || s.length == 6) && s.toCharArray().all { it.isDigit() }
}728x90
'TIL > 알고리즘' 카테고리의 다른 글
| 02/07 알고리즘 공부(38) - 직사각형 별찍기 (0) | 2024.02.07 |
|---|---|
| 02/07 알고리즘 공부(37) - 행렬의 덧셈 (0) | 2024.02.07 |
| 02/06 알고리즘 공부(35) - 부족한 금액 계산하기 (0) | 2024.02.06 |
| 02/06 알고리즘 공부(34) - 문자열 내림차순으로 배치하기 (0) | 2024.02.06 |
| 02/06 알고리즘 공부(33) - 약수의 개수와 덧셈 (0) | 2024.02.06 |