문자열 다루기 기본

문제정의


주어진 문자열이 특정 조건을 만족하는지 확인하는 문제이다. 문자열은 4또는 6의 길이를 갖고 있어야하며, 전부 숫자로 이루어져 있어야한다.

문제풀이


전체 코드는 다음과 같다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public class HandleStr {

public static void main(String[] args)
{
String s = "a234";
boolean answer = false;
if(s.length() == 4 || s.length() == 6)
{
answer = true;
for(int i = 0; i < s.length(); i++)
{
char c = s.charAt(i);
int ascii = (int)c;
if(c > 57 || c < 48)
answer = false;
}

}
}

}
첫번째로 문자열의 길이가 4또는 6을 만족하는지 확인한다. 길이를 만족하면 true로 답을 바꾼다. 그 다음 조건으로 모든 문자열의 문자가 숫자인지 아스키코드로 확인한다. 만약 만족하지 않는 문자가 존재한다면 answer를 false로 바꾼다. 총 시간복잡도는 \(O(n)\)이다.

테스트



다른 사람의 풀이를 보니 NumberFormatException을 활용하여 문제를 푼 사람이 있었다. 문자열을 int로 파싱하는데 에러가 나면 answer를 false로 바꾸는 것이다.