-
[프로그래머스, Lv1] 문자열 다루기 기초알고리즘 문제/Java 2024. 7. 18. 20:51
코딩테스트 연습 - 문자열 다루기 기본 | 프로그래머스 스쿨 (programmers.co.kr)
문제설명
문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수, solution을 완성하세요. 예를 들어 s가 "a234"이면 False를 리턴하고 "1234"라면 True를 리턴하면 됩니다.
제한 사항
- s는 길이 1 이상, 길이 8 이하인 문자열입니다
- s는 영문 알파벳 대소문자 또는 0부터 9까지 숫자로 이루어져 있습니다.
접근 방법
우선 제일먼저 문자열의 길이가 4 or 6인지 체크하고, 길이가 4 or 6이 아닌 경우 바로 false를 반환하게 하였다.
그 이후, 문자열을 순회하며 해당 문자가 숫자가 아닌 경우, 즉시 false를 반환하면 어떨까 싶었다.
그렇게 완성된 코드는 다음과 같았다.
1차 코드
더보기class Solution { public boolean solution(String s) { if(s.length() != 4 && s.length() != 6) { return false; } for(int i = 0; i < s.length(); ++i) { if(!(s.charAt(i) >= '0' && s.charAt(i) <= '9')) { return false; } } return true; } }
코드 자체는 문제 없이 통과됐지만, 해당 문자가 숫자인지 판별하는 부분이 너무 불편했다.
C++에서 해당 문자가 숫자인지 확인할 때 사용하는 isdigit 함수가 있던 것이 떠올라,
isdigit을 사용해보기로 했다.
최종 코드
더보기class Solution { public boolean solution(String s) { if(s.length() != 4 && s.length() != 6) { return false; } for(int i = 0; i < s.length(); ++i) { if(!Character.isDigit(s.charAt(i))) { return false; } } return true; } }
해당 코드로 작성하였고 통과 되었다.
후기
다른 사람이 짠 코드를 보던 중, 신기한 방법이 눈에 보였다.
"
Integer.parseInt를 활용하여 int형으로 변환을 시도
=> 실패시 문자열이 섞여있으므로 false 반환, 성공시 숫자만 있으므로 true 반환
"
방법이었는데, for문을 사용하지 않고 접근하는 방식이 신선했고,
문제처럼 양수만 나오는 것이 아닌 음수도 섞여서 나오는 상황에서
코드 부피 줄일 때 사용하면 좋을 것 같았다.
'알고리즘 문제 > Java' 카테고리의 다른 글
[프로그래머스, Lv1] 명예의 전당(1) (1) 2024.07.24 [프로그래머스, Lv1] K번째 수 (0) 2024.07.23 [내배캠, Lv3] 단어 맞추기 게임 (0) 2024.06.19 [내배캠, Lv2] 자판기 (0) 2024.06.14 [내배캠, Lv1] 랜덤 닉네임 생성기 (0) 2024.06.13