프로그래머스 - 문자열 밀기

JJJ·2023년 5월 23일
0


풀이

class Solution {
    public int solution(String A, String B) {
        int answer = 0;
        String[] str=(A+A).split("");
        String tmp="";
        
        for(int i=A.length(); i>0; i--){
            for(int j=i; j<(i+A.length()); j++){
                tmp+=str[j];
            }
            if(tmp.equals(B)) break;
            tmp="";
            answer++;
        }
        if(answer==A.length()) answer=-1;
        return answer;
    }
}

풀이방법
1) A의 맨끝 요소가 맨 앞에서 출력되어 B와 비교한다.
String A를 2번 연결하여 index를 A.length()부터 감소시키면서 A의 길이만큼 출력한다.

ex) hello + hello = h e l l o h e l l o
index번호 0 1 2 3 4 5 6 7 8 9
5~9 = hello
4~8 = ohell
.
.
.
1~4 = elloh

재미있는 방법이라고 생각하고 작성했지만, 좋은 코드라고 할 수는 없을것같다.
선언된 변수도 많고, 2중for문에 if문도 2개나 들어가서
속도도 느리고 코드도 너무 길다.

그리고 이 방법을 아주 현명하게 푼 사람이 있었다.

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

한번만 틀어서 생각했다면 떠올릴법도 했을텐데....아쉽다.

profile
Think Talk Act

0개의 댓글