알고리즘

[알고리즘] 대문자를 기준으로 문자열 나누기_java

seulhasony 2023. 5. 29. 22:59

문제는 String 문자열 S1을 인자값으로 받고 대문자를 기준으로 단어를 나눈 다음,

두 단어를 뒤집었을 때 S2인자값과 동일한 지 확인하는 문제였습니다!

예)

S1 = HelloJava

S2 = JavaHello

인 경우, 1을 반환

 

S1 = HelloJava

S2 = JavaBye

인 경우, 0을 반환


여기서 관건을 대문자를 찾아서 단어를 분리해내는 것이었는데, 저는 문자열을 하나하나 분리해서 배열로 만들고

하나씩 불러온 다음 대문자인지를 boolean값으로 확인하는 방법을 사용했습니다.

 

그리고, 대문자의 위치를 찾아내서 그 위치만큼 substring하여 문자열을 분리해냈습니다!

코드는 아래와 같습니다.

class Solution {
    public int solution(String S1, String S2) {
        int answer = 0;
        int idx = 0;

        int i =0;
        for(char c : S1.toCharArray()){
            if(Character.isUpperCase(c)){
                if(i==1){
                    idx = S1.indexOf(c);
                }
                i++;
            }
        }

        String str = S1.substring(idx) + S1.substring(0,idx);
        if(S2.equals(str)){
            answer = 1;
        }
        return answer;
    }
}

 

**여기서 if(i==1)인 경우를 조건을 걸어, index 위치를 활용한 이유는 두 번째 단어의 대문자의 위치만 가져오기 위함이다.

 

 

문제를 푸는데 사용한 주요 메소드

메소드 설명
toCharArray() 문자열을 하나씩 분리해서 char배열로 변환해준다.
isUpperCase() 해당 문자가 대문자인지 boolean값으로 리턴해준다.
**Character의 체이닝 메소드이므로, 자료형을 String이 아닌 char형으로 인자값을 넘겨야 한다.
indexOf() 찾고자 하는 문자가 몇 번째에 위치하는지 int로 반환한다.