🙈

⃝ 동글동글 ⃝

🪐ᐩ˖ 🍎

CodingTest/Programmers

[프로그래머스/Programmers] 문자열 다루기 기본 (Java - 문자열)

JONG_UK 2023. 1. 2. 10:08
728x90
반응형
SMALL

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

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


⭐️ 코드

방법 1

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

        return answer;
    }
}

방법 2 (method 활용)

public class P_9 {
    public boolean solution(String s) {
        boolean answer = true;
        answer = length_Cnt(s);
        if(answer == true) {
            answer = is_Num(s);
        }
        return answer;
    }

    public boolean length_Cnt(String s) {
        if(s.length() < 4 || s.length() > 6) {
            return false;
        } else {
            return true;
        }
    }

    public boolean is_Num(String s) {
        for(int i = 0; i<s.length(); i++) {
            char c = s.charAt(i);
            if(c < '0' || c > '9') {
                return false;
            }
        }
        return true;
    }

💡 문제 풀이

  • 조건에서 길이를 먼저 체크할지 문자를 먼저 체크할지는 하기 나름이지만 길이를 먼저 검사하는 것이 불필요한 반복을 줄일 수 있다고 생각된다. 
for(int i = 0; i<s.length(); i++) {
    char c = s.charAt(i);
    if(c<'0' || c>'9') {
        return false;
    }
}
  • for문을 통해 문자열 s의 각 index에 해당하는 char 문자를 가져온다.
  • if문을 통해 문자 c의 크기를 비교하게 되는데 'char c = s.charAt(i)'는 문자열에서 하나의 문자를 추출했기 때문에 c의 출력값이 0이더라도 그건 숫자(int)가 아니라 문자(char) 임을 꼭 알아두자.
  • Java에서 문자는 간단하게 '<' 와 '>'를 사용하여 대소 비교를 할 수 있는데 Ascii 코드 값으로 비교가 된다.

 

  • 위의 Ascii 코드 표를 참고해보면 문자 0에 대한 값은 48이다. 가끔 여러분들이 흔히 보는 c - '0' 같은 코드는 아스키코드 값인 0을 빼서 int형 숫자로 만들어 우리가 익히 알고 있는 정수형으로 표현하는 것이다.
  • 따라서 위의 if문의 대소 비교도 결국 숫자만을 찾기 위함이므로 '48 > c < 57' 형식으로 진행되는 것이다.

👀 후기

  • 다시 풀어보는 중인데 하나하나 알아가는 재미가 있다.
  • String 문자열과 Char 문자에 대한 자바 관련 코드는 정말 많은데 왜 그렇게 변환되고, 비교를 위해 여러 작업을 거치는지에 관해서 알아가야 할게 많다 ㅎㅎ.. 
  • 어렵지만 차근차근 해보자!! 파이팅!
728x90
반응형
LIST