문제는 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로 반환한다. |
'알고리즘' 카테고리의 다른 글
| [알고리즘]HashSet을 이용한 집합연산(합집합,교집합,차집합) + 프로그래밍적 집합연산 (0) | 2023.06.14 |
|---|---|
| [알고리즘]청소로봇 작동하기(feat.n*n이차원 배열)_java (0) | 2023.05.30 |
| [알고리즘]유클리드 호제법을 이용한 최대공약수와 최소공배수 구하기_java (0) | 2023.05.29 |
| [알고리즘]프로그래머스-추억점수(2차원 배열과 해시테이블의 합작)_java (2) | 2023.05.29 |
| [알고리즘]프로그래머스 - 최빈값 구하기(HashMap을 곁들인) (0) | 2023.05.29 |