본문 바로가기
Algorithm/프로그래머스

[프로그래머스]연습문제 : 문자열 다루기 기본 (level 1)

by HBGB 2019. 11. 6.

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

 

코딩테스트 연습 - 문자열 다루기 기본 | 프로그래머스

문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수, solution을 완성하세요. 예를 들어 s가 a234이면 False를 리턴하고 1234라면 True를 리턴하면 됩니다. 제한 사항 s는 길이 1 이상, 길이 8 이하인 문자열입니다. 입출력 예 s return a234 false 1234 true

programmers.co.kr

 

방법 1 : 내가 짠 쉬운 답안

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class Solution {
    public boolean solution(String s) {
      
      // 길이가 4 or 6이 아니면 false
      int length = s.length();
 
      if (!(length == 4 || length == 6)) {
        return false;
      }
      
      // 0 ~ 9 사이의 문자가 아니면 false
      for (int i = 0; i < length; i++) {
        if (s.charAt(i) < '0' || s.charAt(i) > '9')
        {
          return false;
        }
      }
        return true;
    }
}
Colored by Color Scripter

 

방법 2 : 신기한 다른 분 답안

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class Solution {
  public boolean solution(String s) {
      if(s.length() == 4 || s.length() == 6){
          
          // String -> int 파싱 시도. 성공하면 true
          try{
              int x = Integer.parseInt(s);
              return true;
 
          // 익셉션이 나면 false
          } catch(NumberFormatException e){
              return false;
          }
      }
      else return false;
  }
}
Colored by Color Scripter

 

방법 3: 생소한 다른 분 답안

1
2
3
4
5
6
7
8
9
10
11
12
import java.util.*;
 
class Solution {
  public boolean solution(String s) {
        if (s.length() == 4 || s.length() == 6) {
 
            // 정규식에 일치하면 true
            return s.matches("(^[0-9]*$)");
        }
        return false;
  }
}
Colored by Color Scripter

 

 

String을 int로 파싱 시도해보고

성공하면 true, 오류나면 false 처리하는 방법 2는 대체 어떻게 생각하신 걸까

신기한 방법이다. 

 

정규식텍스트 처리데이터 검증에 매우 유용하다고 한다. 

무섭게 생겼지만, 내가 과외하던 시절 애들한테 입버릇처럼 하던 얘기가 있다.

 

이거는!! 처음봐서 낯선거지 어려운게 아니야!!
한 10번 봐도 이상하면 그게 어려운거야 ㅋㅋ

 

아직 초면이므로,,, 좀더 마주쳐서 안면이 익으면 다시 보겠다. 

댓글