풀이
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);
}
}
한번만 틀어서 생각했다면 떠올릴법도 했을텐데....아쉽다.