문제 설명
문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼 있는지 확인해 주는 함수, solution을 완성하세요. 예를 들어 s가 "a234"이면 False를 리턴하고 "1234"라면 True를 리턴하면 됩니다.
제한 사항
- s는 길이 1 이상, 길이 8 이하인 문자열입니다.
- s는 영문 알파벳 대소문자 또는 0부터 9까지 숫자로 이루어져 있습니다.
입출력 예
코드 생각
- 문자열 길이가 4 또는 6이여야 하는 부분을 확인하고 숫자로 구성되어 있는지 확인하는 로직으로 가야겠다.
- Char형으로 변경해서 아스키코드로 숫자로 구성되어 있는지 확인해 봐야겠다.
Solution.java
class Solution {
public boolean solution(String s) {
boolean answer = true;
char[] str = s.toCharArray();
// 문자열 길이는 4 or 6
if(str.length == 4 || str.length ==6){
for(int i = 0 ; i < str.length ; i++){
if(48 <= str[i] && str[i] <= 57){
answer = true;
}else{
answer = false;
break;
}
}
}else{
answer = false;
}
return answer;
}
}
새롭게 알게 된 기술 & 주요 기술
저는 제가 문제를 풀고 다른 분들의 풀이를 보는걸 좋아하는데요, 정말 생각지도 못한 방법과 다양한 풀이법에 매번 놀라고 새로운 문제 해결 방식을 이해할 때 재미를 느낍니다. 다른 분들의 코드를 보면서 정말 많이 배웁니다.
다양한 풀이방법에 대해 정리해 보았습니다.
▶ matches()
주어진 정규 표현식과 일치하는지 여부를 확인하는 함수입니다. 정규 표현식을 사용하지 않아도 가능하지만 비교하는 대상과 정확히 일치해야합니다. 일치하게 되면 true를 반환해 줍니다.
class Solution {
public boolean solution(String s) {
boolean answer = true;
if(s.length() == 4 || s.length() == 6){
if(s.matches("(^[0-9]*$)")){
answer = true;
}else{
answer = false;
}
}else{
answer = false;
}
return answer;
}
}
▶ try-catch
문자열 전체를 정수로 바꾸고 정수가 아닌 예외가 터지면 반환값을 `false`로 해주는 방식입니다.
class Solution {
public boolean solution(String s) {
boolean answer = true;
if(s.length() == 4 || s.length() == 6){
try{
int sToInt = Integer.parseInt(s);
answer = true;
}catch(NumberFormatException e){
answer = false;
}
}else{
answer = false;
}
return answer;
}
}
실행결과
문제 URL
https://school.programmers.co.kr/learn/courses/30/lessons/12918
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
Reference
- Tistory, "[JAVA] 자바_matches (정규 표현식과 일치하는지 여부 확인)", https://mine-it-record.tistory.com/138
[JAVA] 자바_matches (정규 표현식과 일치하는지 여부 확인)
- 정규표현식과 일치하는지 확인하기 - matches() - boolean matches(String regex) - 주어진 정규 표현식과 일치하는지 여부를 확인하는 함수이다. - 정규 표현식을 사용하지 않아도 가능하지만 "정확히" 일
mine-it-record.tistory.com
- Tistory, "[프로그래머스] 문자열 다루기 기본 - 자바(JAVA)", https://ittrue.tistory.com/327
[프로그래머스] 문자열 다루기 기본 - 자바(Java)
문제 https://school.programmers.co.kr/learn/courses/30/lessons/12918 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘
ittrue.tistory.com
- velog, "[프로그래머스] - 문자열 다루기 기본 JAVA", https://velog.io/@dhk22/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%EB%AC%B8%EC%9E%90%EC%97%B4-%EB%8B%A4%EB%A3%A8%EA%B8%B0-%EA%B8%B0%EB%B3%B8-JAVA
[프로그래머스] - 문자열 다루기 기본 JAVA
프로그래머스 문자열 다루기 기본 JAVA
velog.io
- wikipedia, "ASCII", https://ko.wikipedia.org/wiki/ASCII
ASCII - 위키백과, 우리 모두의 백과사전
위키백과, 우리 모두의 백과사전. 1972 프린터 사용 설명서에 개시된 아스키 코드 차트표 미국정보교환표준부호(영어: American Standard Code for Information Interchange), 또는 줄여서 ASCII( , 아스키)는 영문
ko.wikipedia.org
'수수한 코딩세상 > Code Kata' 카테고리의 다른 글
[Programmers][MySQL] 상위 n개 레코드 (LIMIT) (1) | 2024.08.26 |
---|---|
[Programmers][Java] 행렬의 덧셈 (2차원 배열) (0) | 2024.08.23 |
[Programmers][MySQL] 중복 제거하기 (DISTINCT, GROUP BY) (0) | 2024.08.20 |
[Programmers][MySQL] NULL 처리하기 (IFNULL, IF, IS NULL, CASE, COALESCE) (0) | 2024.08.20 |
[Programmers][Java] 제일 작은 수 제거하기 (배열의 크기는 0이 될 수 없다) (0) | 2024.08.16 |