알고리즘

[프로그래머스, 자바] 문자열 밀기

hminor 2024. 3. 19. 12:09

풀이

  • StringBuilder를 사용해서 문자를 추가하고 초기화하여 해결.
  • 여기서 기존 문자간의 비교는 equals() 메서드를 사용했지만
  • StringBuilder와의 문자열과의 비교는 equals()로는 안되고 
  • contentEquals()로 해야 한다는 것을 알게 되었다.
  • 그리고 초기화는 sb.delete()로 시작과 끝 인덱스 값을 넣어주기.
  • 그런데 이렇게 풀지 않고 그냥 A를 두배로 늘려서 B가 어디에 있는지 indexOf()로 찾는 방법도 있어서
  • 아래 두 번째 해결 방법으로 풀 수도 있음.

 

class Solution {
    public int solution(String A, String B) {
        int ln = A.length();
        StringBuilder sb = new StringBuilder();
        for (int i=0; i<ln; i++) {
            boolean state = true;
            for (int j=0; j<ln; j++) {
                sb.append(B.charAt((i+j)%ln));
                if (!A.substring(0,j+1).contentEquals(sb)) {
                    state = false;
                    break;
                }
            }
            if (state) return i;
            sb.delete(0,ln);
        }
        return -1;
    }
}

 

 

class Solution {
    public int solution(String A, String B) {
        return B.repeat(2).indexOf(A);
    }
}