[2020-11-11] 문자열 다루기 기본

2020. 11. 11. 10:24코딩테스트

푼 시간 : 40분

언어 : 자바

 


 

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이어야 한다는 조건을 보지 못하고 다 만들어놓고나서

엄청나게 헤맸다... 다음부터는 지문을 잘 읽어봐야겠다.

 

class Solution {
    public boolean solution(String s) {
        boolean answer = true;
        int count=s.length();
        int temp=0;
        
        for(int i=0; i<count; i++){
            if((s.charAt(i)>=65) && (s.charAt(i)<=90)){
            // 대문자 A부터 Z까지
                temp++;
                break;
            }
            else if((s.charAt(i)>=97) && (s.charAt(i)<=122)){
            // 소문자 a부터 z까지
                temp++;
                break;
            }
        }
        
        if((count!=4 && count!=6)||temp>0)
        // s의 길이 4, 6이 아닐경우, temp가 0보다 클 경우
            answer=false;
        
        return answer;
    }
}

 

코드를 제출하고 보니 더 간소화시킬 방법이 있을 것 같아

고민하다가 다시 간소화 해봤다. 코드가 너무 거쳐가는게 많은 것 같다.

 

class Solution {
    public boolean solution(String s) {
        boolean answer = true;
        int count=s.length();
        
        for(int i=0; i<count; i++){
            if(((s.charAt(i)>=65) && (s.charAt(i)<=90)) ||
            // 대문자 A~Z
               ((s.charAt(i)>=97) && (s.charAt(i)<=122)) ||
               // 소문자 a~z
               count!=4 && count!=6){
               // s의 길이
                answer=false;
                break;
            }
        }
        
        return answer;
    }
}

 

얼마 바뀐건 없지만 temp라는 변수로 메모리를 차지하지 않고,

if를 두번 쓸 필요가 없어졌다.

생각보다 조건 하나를 못 건드려서 어려웠던 것 같다...