CodingTest/Programmers
[프로그래머스/Programmers] 문자열 다루기 기본 (Java - 문자열)
JONG_UK
2023. 1. 2. 10:08
728x90
반응형
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
반응형