본문 바로가기
IT/Algorithm

프로그래머스(Programmers) 문자열 다루기 기본 풀이(java)

by flatsun 2019. 8. 8.
반응형

프로그래머스 문자열 다루기 기본 문제는

 

문자열 s의 길이가 4 혹은 6이면서

숫자로만 구성되면 true, 문자가 섞여있으면 false를 반환하라는 내용이다

 

두개가 포인트니

문자열의 길이 체크와

String이 전부 숫자인지 확인하면 되는데 

 

풀이방법은 다음과 같다

 

 

먼저 문자열의 길이 체크는

s.length() 로 확인 가능하고

4,6이 아니면 다 false를 줘버리면 된다

 

그리고 String이 문자인지 숫자인지 체크하는 경우에는

아래 글을 참조하면 좀 도움이 될텐데

 

자바 String 값 숫자인지 문자인지 확인하는 방법

111은 숫자지만 1AA1는 숫자가 아니다 하지만 숫자와 문자가 섞인 숫자를 String으로 받는다고 할 때 숫자만 구별해내는 방법이 있을까? Double.parseDouble(String값); 을 사용하면 되는데 문자열을 Double 타입..

flatsun.tistory.com

Integer.parseInt(String값);

혹은 

Double.parseDouble(String값);

을 사용해서 String을 int나 Double 형태로 변환시키면 되는데

 

똑같이 변환시켜도 Integer는 되고 Double은 되지 않는 것으로 보아

아마 테스트 케이스에 소수는 포함되어 있지 않나 보다

 

이게 프로그래머스가 정말 후진게

학습과 시험의 차이를 모르는 것 같다

 

배울 때는 틀렸으면 왜 틀렸는지 알려줘야 하는데

그냥 틀렸다! 이러면 뭐 어쩌라는 건지

 

시험일 경우에는 그냥 틀렸다! 이러면 되겠지만

이건 시험이 아니라 학습 아닌가

 

틀렸으면 왜 틀렸는지를 알아서 보완하게 해야하는데

거기까지는 머리가 굴러가지 않는지

 

왜!? 가 생략되어 있다

그거 만드는게 뭐 어렵다고

 

어쨌든 프로그래머스에 바로 적용할 수 있는

전체 풀이는 다음과 같다

class Solution {
  public boolean solution(String s) {
	    boolean answer = true; // 기본값 true

        try {
            Integer.parseInt(s); // Int 형태로 변환 가능할 경우 true 유지
             if(s.length() != 4 && s.length() != 6) { // 4,6이 아닌 경우
                 answer = false; // 문자열의 길이가 4,6이 아닌 경우 false
             }
        } catch (Exception e) {
            answer = false;	// 불가능할 경우 false로 변경
        }		

        return answer; // 값 반환
  }
}
반응형

댓글