알고리즘/프로그래머스 일기

[프로그래머스] LV1-1

홍또~ 2020. 5. 28. 15:47

문제

1번문제

설계

 사실 문제가 너무 쉬워서 설계라고 할것도 없다. 

for문 안에서 입력받은 Stirng 문자열의 문자단위로 하나씩 바라보며 값을 읽고,

해당 대상이 아스키코드로 65 이상인지 아닌지,

문자열의 길이가 4와 6인지 아닌지. 크게 두가지로 검증을 한 후

결과값으로 True, false 만 리턴하면 될것이라고 생각했다.

시행착오

코딩을 손놓은지 오래라서, 어떤 문법을 써서 해당 설계안을 구현할지가 문제였다.

1.입력받은 String 문자열을 어떻게 문자단위로 하나씩 자르고 숫자와 비교할까?

처음에는 substring함수를 사용하여 문자단위로 자르고 그것을 int형으로 바꿔서 비교하려고 했으나,

Integer.parseInt를 쓰면 문자열 그대로 int형으로 바뀔뿐이지 아스키코드가 되는건 아니였다.(ex String형 9를 parseInt하면 int형 9가된다, 9의 아스키코드값인 57은 되지않는다)

그래서 구글링을 하던중 toCharArray() 함수를 찾아냈다. String형을 char배열로 바꾸어 각 문자를 배열에 담는것이였다.

이것을이용해서 Stirng을 char배열에 담고 각 배열 원소를 숫자와 비교하였다. (int)를 앞에 붙여서 강제형변환을 하였다(String에서 강제 형변환을 시도하지않았던 이유는 자바에서 Stirng은 기초자료형이아니라 클래스라는 말을 들었기때문)

코드

class Solution {
    public boolean solution(String s) {
        boolean answer = true;
        
        for(int i=0; i<s.length(); i++)
        {
            char[] check = s.toCharArray();
            if((int)check[i]>=65)
            {
                answer = false;
                break;
            }
            if(s.length()!=4 && s.length()!=6)
            {
                 answer = false;
                break;
            }
        }
        
        return answer;
    }
}

결과

테스트 케이스 전부 통과

한줄평

엄청나게 쉬운문제임에도 불구하고 어떤 함수를 써서 구현해야할지에 대해서 애먹었다. 차차 익숙해져야한다.