문자열 크기가 4혹은 6이고 숫자만 있으면 true, 그 외에는 false를 출력하는 문제이다. 아까의 김씨 찾기 문제와 같이 문제 이해가 정확하게 되지 않아 혼란스러웠다.
먼저 크기가 4혹은 6이 아니면 실패로 한 뒤, 바로 정답을 리턴해준다. 내가 헷갈린 게 이 if 부분. 사이즈가 4도 아니'고(&&)' 6도 아니면, 실패를 해주어야 한다. 사이즈가 4가 아니'거나(||)' 6이 아니면, 실패가 아니라. 솔직히 아직도 둘 차이를 모르겠다. 정말 모르겠...
그 다음에는 문자열에 하나라도 숫자 아닌 값이 있다면, answer을 false로 바꾸고 바로 break하는 것이다. !를 사용해서 숫자가 아니면을 표현해주었다. 48 ~ 57은 아스키 코드로 0 ~ 9를 의미한다. 아니면, '0' ~ '9'를 써줘도 된다.
문자열을 많이 안 다뤄서 그런지 아스키 코드가 나오면 여전히 복잡하다...
bool solution(string s) {
bool answer = true;
for(int i = 0; i < s.size(); i++){
if(s.size() != 4 && s.size() != 6){
answer = false;
break;
}
if(!(s[i] >= '0' && s[i] <= '9')){
answer = false;
break;
}
}
return answer;
}