본문 바로가기
알고리즘/문제 풀이

[Java] 프로그래머스 > 문자열 다루기 기본

by _eunji_ 2022. 1. 30.

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

 

코딩테스트 연습 - 문자열 다루기 기본

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

programmers.co.kr

 

문제 설명

  • 문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수 완성
  • 예를 들어 s가 "a234"이면 False를 리턴, "1234"라면 True를 리턴

제한 사항

  • s는 길이 1 이상, 길이 8 이하인 문자열

먼저, 문자열이 숫자인지 판별하는 isNumer 함수를 구현한다.

isNumber()

  • str 문자열을 하나씩 문자로 쪼개서 '0'~'9'밖의 범위인지 확인한다
  • 숫자 범위를 벗어났을 때 flag변수를 false로 변경한다.
  • 반복문을 통해 flag값이 변경되지 않았다면 true 리턴

문자열의 길이가 4 혹은 6이고 isNumber()의 결과가 true일 때 true를 반환하고 아니면 false를 반환해준다.

 

내 코드

class Solution {
    public boolean solution(String s) {
        boolean answer = true;
        
        if(s.length()==4 || s.length()==6) 
            if(isNumber(s)) answer = true;
            else answer = false;
        else
            answer = false;
        
        return answer;
    }
    
    boolean isNumber(String str){
        char temp = 0;
	boolean flag = true;
        
        for(int i=0; i<str.length(); i++) {
			temp = str.charAt(i);
				if (temp < '0' || temp > '9' ) {
					flag = false;
					break;
				}	
		}
        
		if(flag == true) {	
			return true;
		}else {
			return false;
		}
    }
}

 

다른 풀이

class Solution {
  public boolean solution(String s) {
      if(s.length() == 4 || s.length() == 6){
          try{
              int x = Integer.parseInt(s);
              return true;
          } catch(NumberFormatException e){
              return false;
          }
      }
      else return false;
  }
}

문자열의 길이가 4 또는 6일때 문자열을 int로 바꾸었을 때 성공하면 true 반환 오류가 발생하면 false 반환

댓글