문제 설명 및 입출력 예시
문자열 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 |