leetcode 520, Detect Capital

NJW·2023년 1월 2일
0

코테

목록 보기
126/170

여행 계획 짜느라고 공부에 소홀했다. 근데 그 여행도 못 가게됬다는 게 함정... 아, 공부를 열심히 하자.

문제 설명

단어의 대, 소문자가 올바르게 되어 있는지를 확인하는 문제다. 올바르면 true를, 올바르지 않으면 false를 반환한다.

문제 풀이

  1. 필요한 자료구조
    딱히 없음..?
  2. 첫 번째 문자가 대문자인 경우 first를 true로 바꿔준다.
  3. 해당 단어의 모든 문자를 검사하는데, 만일 대문자라면 upper에 ++하고 소문자라면 lower에 ++한다.
  4. 여기서부터는 조건을 따진다.
    3-1. 만일 upper가 0이고 lower가 총 문자의 길이라면 true를 반환한다.
    3-2. 만일 upper가 1이고 lower가 총 문자의 길이 -1이며 first가 true라면 true를 반환한다.
    3-3. 만일 upper가 총 문자의 길이고 lower가 0이라면 true를 반환한다.
  5. 위의 조건 셋 다 아니라면 false를 반환한다.

코드

class Solution {
    public boolean detectCapitalUse(String word) {
        int upper = 0;
        int lower = 0;
        boolean first = false;

        if(word.charAt(0) >= 'A' && word.charAt(0) <= 'Z'){
            first = true;
        } 

        for(int i=0; i<word.length(); i++){
            if(word.charAt(i) >= 'a' && word.charAt(i) <= 'z'){
                lower++;
            }

            if(word.charAt(i) >= 'A' && word.charAt(i) <= 'Z'){
                upper++;
            }
        }

        //System.out.println(upper + " " + lower);

        //단어가 모두 대문자로 되어있는 경우
        if(upper == word.length() && lower == 0){
            return true;
        }

        //첫 문자만 대문자이고 나머지는 소문자인 경우
        if(upper == 1 && lower == word.length()-1 && first == true){
            return true;
        }

        //전부 소문자인 경우
        if(upper == 0 && lower == word.length()){
            return true;
        }

        return false;
    }
}

링크

https://leetcode.com/problems/detect-capital/description/

profile
https://jiwonna52.tistory.com/

0개의 댓글