실력 향상 일지/프로그래머스

[Java] 문자열 다루기 기본

juniordev 2022. 11. 1. 18:50

문제 설명 및 입출력 예시

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

제한사항

    - s는 길이 1 이상, 길이 8 이하인 문자열입니다.

    - s는 영문 알파벳 대소문자 또는 0부터 9까지 숫자로 이루어져 있습니다.

 

입출력 예

s return
"a234" false
"1234" true

 


코드 & 풀이과정

class Solution {
    public boolean solution(String s) {
        boolean answer = true;
        char[] a = s.toCharArray();
        for (int i = 0; i < s.length(); i++) {
            if(s.length() == 6 || s.length() == 4) {
                if ((a[i] - '0') < 10) {
                    System.out.println("true - (a[i] - '0') = " + (a[i] - '0'));
                    answer = true;
                } else {
                    System.out.println("false - (a[i] - '0') = " + (a[i] - '0'));
                    answer = false;
                    break;
                }
            }
            else{
                answer = false;
            }
        }
        return answer;
    }
}

먼저 s를 toCharArray를 이용해 char a배열에 넣어준다.

그 후 s의 길이만큼 돌아가는 포문을 만들어주고 a[i]의 아스키코드값이 10 미만이라면 answer은 true로

반대로 아스키코드값이 10 이상이라면 answer을 false로 만들어주고 break를 걸어준다.

이외의 상황에서는 모두 false를 걸어주고 answer값을 return해준다.


 

회고

처음에 아무리 해도 안돼서 왜 안됄까~ 하고 고민을 좀 해봤다.

그랬더니 세상에~ 문제 설명 제일 처음에 문자열의 길이가 4 or 6이라는 글을 본 것이다.

그래서 if문을 이용해 만약 s.length가 4 or 6일 경우에 코드가 돌아갈 수 있도록 설계를 했다.

 

그리고 또 든 생각은 4 or 6을 구별하는 if문을 for문 위에 뒀으면 좀 더 시간 복잡도가 줄었을까? 싶은 생각이 든다.


💻프로그래머스 문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/12918

 

'실력 향상 일지 > 프로그래머스' 카테고리의 다른 글

[Java] 행렬의 덧셈  (0) 2022.11.07
[Java] 약수의 개수와 덧셈  (0) 2022.11.04
[Java] 문자열 내림차순으로 배치하기  (0) 2022.10.31
[Java] 내적  (0) 2022.10.30
[Java] 가운데 글자 가져오기  (0) 2022.10.28