Algorithm/프로그래머스

[프로그래머스] Level1) 문자열 다루기 기본

햄습햄 2021. 10. 27. 00:59

문제 설명

 

문자열 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 1
6 1
7 1

 

결국 배열에 각각 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 1 2 3

s2

1 2 3 4

s1, s2 중 숫자가 아닌 값만 남게 된다.

 

 

기타

 

split을 비교하는 용도로도 사용할 수 있다는 것이 매우 흥미로웠다. 생각해 보지 못했고, 간단하게 처리할 수 있어 좋은 방법이라고 생각했다.