문제 설명
문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수, solution을 완성하세요. 예를 들어 s가 "a234"이면 False를 리턴하고 "1234"라면 True를 리턴하면 됩니다.
제한 조건
- s는 길이 1 이상, 길이 8 이하인 문자열입니다.
풀이 과정 (자바)
boolean형 answer를 false로 초기화했다.
먼저, 문자열 s의 길이가 4 또는 6일 때를 확인했다.
그리고 parseInt를 이용해 문자열 s를 int로 변환하고자 했다.
이때, 만약 s가 숫자로만 되어 있지 않으면 try-catch를 통해 Exception으로 빠지도록 했다.
숫자인 경우에만 answer 값을 true로 처리했다.
마지막으로 answer를 반환했다.
결과
다른 사람의 풀이
문자열 s의 길이가 4, 6이 아닐 때, false를 반환했다. (길이가 4 또는 6이라면 OK)
문자열 s를 0~9로 split한 길이가 0보다 클 때, false를 반환했다. (길이가 0인 경우, OK)
문자열 s의 길이가 4 또는 6이고, 숫자로만 구성되어 있을 때만 true를 반환했다.
s.split("[0-9]")란?
문자열 s를 0에서 9까지의 수로 구분했다는 것을 의미한다.
예를 들어,
문자열 s가 516171이라고 하자.
s
5 | 1 | 6 | 1 | 7 | 1 |
s.split("1")일 때,
문자열 s를 1로 구분하게 된다.
5 |
6 |
7 |
결국 배열에 각각 5, 6, 7이 들어가게 된다.
s
5 | 6 | 7 |
문제로 돌아와서,
문자열 s1이 a123, s2가 1234라고 하자.
s1
a | 1 | 2 | 3 |
s2
1 | 2 | 3 | 4 |
s.split("[0-9]")일 때,
문자열 s를 0부터 9까지의 수(숫자)로 구분하게 된다.
그러면,
s1
a |
s2
s1, s2 중 숫자가 아닌 값만 남게 된다.
기타
split을 비교하는 용도로도 사용할 수 있다는 것이 매우 흥미로웠다. 생각해 보지 못했고, 간단하게 처리할 수 있어 좋은 방법이라고 생각했다.
'Algorithm > 프로그래머스' 카테고리의 다른 글
[프로그래머스] Level1) 문자열 내 p와 y의 개수 (0) | 2021.10.29 |
---|---|
[프로그래머스] Level1) 문자열 내림차순으로 배치하기 (0) | 2021.10.28 |
[프로그래머스] Level1) 서울에서 김서방 찾기 (0) | 2021.10.26 |
[프로그래머스] Level1) 소수 찾기 (0) | 2021.10.25 |