코린이의 소소한 공부노트

[LeetCode/Easy] 520. Detect Capital 본문

코딩테스트 풀이/JAVA

[LeetCode/Easy] 520. Detect Capital

무지맘 2022. 12. 2. 00:17

1. Input

1) 문자열 word

 

2. Output

1) 대문자 사용이 올바를 경우 true, 아니면 false 반환

2) 대문자는 다음과 같이 사용했을 때 바르게 사용했다고 할 수 있다.

- “TUE”처럼 단어의 모든 글자가 대문자인 경우

- “gift”처럼 단어의 모든 글자가 소문자인 경우

- “Korea”처럼 단어의 앞 글자만 대문자인 경우

 

3. Constraint

1) 1 <= word.length <= 100

2) word는 영어 대소문자로만 이루어져 있다.

 

4. Example

Input: word=“phoNe” -> Output: false

 

5. Code

1) 첫 코드(2022/07/13)

if(word.length() == 1)
    return true;

boolean isRight = true;

if(word.charAt(0)<=90){ // 대문자
    if(word.charAt(1)<=90){ // 모두 대문자
        for(int i=2 ; i<word.length() ; i++)
            if(word.charAt(i)>=97){
                isRight = false; break;
            }
        }
    else{ // 나머지 모두 소문자
        for(int i=2 ; i<word.length() ; i++)
            if(word.charAt(i)<=90){
                isRight = false; break;
            }
    }
} else{ // 소문자 시작
    for(int i=1 ; i<word.length() ; i++)
        if(word.charAt(i)<=90){
            isRight = false; break;
        }
}

return isRight;

 2) 코드 줄 수를 줄여봄(2022/12/02)

boolean answer = false;
if(word.matches("[a-z]+")) answer = true;
else if(word.matches("[A-Z]+")) answer = true;
else if(word.charAt(0)<=90 && word.substring(1).matches("[a-z]+")) answer = true;
return answer;

  - 1번이 더 빠르고 공간 절약도 많이 된다.