[작성일: 2023. 11. 30]
풀이 1
class Solution {
public int solution(String A, String B) {
int answer = 0;
String C = A;
for (int i = 0; i < A.length(); i++) {
if(C.equals(B)) return answer;
String D = C.substring(C.length() - 1);
C = D + C.substring(0, C.length() - 1);
answer++;
}
return -1;
}
}
풀이 1은 내가 푼 방법으로 C라는 String 변수를 만들어서 A를 대입한다.
첫 반복문에서 C와 B가 같다면 문자열을 밀어야 할 필요가 없으므로 0을 리턴한다.
그렇지 않다면 D라는 String 변수를 만들어서 C.substring(C.length() - 1)을 대입한다.
substring에 파라미터를 1개만 전달하면 전달된 파라미터 인덱스부터 문자열 끝까지 자른다.
C.length() - 1을 파라미터로 넘겼으므로 C가 abcd일 경우 d를 D에 대입하게 된다.
그 다음 C에는 D와 C.substring(0, C.length() - 1)을 더해서 대입한다.
D는 "d"이고, 0부터 C.length() -1은 abc가 되므로 C에는 dabc가 저장된다. (문자열이 한 개 밀린 셈이다.)
문자열을 한 번 밀었으므로 answer를 증가시켜주고, 다시 반복문을 돌게 되는 코드가 된다.
반복문 안에서 return이 없었으면 문자열을 밀어도 B가 될 수 없었으므로 -1을 리턴한다.