프로그래머의 코딩 테스트 입문 문제에서 ‘스트링 푸시’ 문제를 풀었습니다.
지정된 문자열 A를 오른쪽으로 한 칸 이동할 수 있습니다. 이 시점에서 문제는 주어진 문자열 B를 얻기 위해 문자열 A를 몇 번 눌러야 하는지 알아내는 것입니다.
문제 설명에 설명된 대로 알고리즘으로 문제를 풀어서 풀려고 했습니다. 따라서 문자열 A와 문자열 B를 비교한 후 같으면 이동 횟수를 반환합니다.
class Solution {
public int solution(String A, String B) {
int answer = 0;
if(A.equals(B)){
return answer;
}
for(int i = 0; i < A.length(); i++){
A = A.substring(A.length()-1) + A.substring(0, A.length()-1);
answer++;
if(A.equals(B)){
break;
}
}
return answer == A.length() ? -1 : answer;
}
}
- 스트링을 슬라이딩하기 전에 원래 스트링을 비교할 수 있습니다. 비교 결과가 같으면 답변이 즉시 반환됩니다.
- 문자열은 반복될 때 A 문자열의 크기만큼 이동합니다. 이때 문자열을 누른 횟수만큼 응답값이 증가합니다.
- 문자열을 누를 때마다 비교를 수행합니다. 비교 결과가 같으면 루프가 종료됩니다.
- 일반적으로 루프를 종료할 때 응답에 최소 푸시 수가 포함되어 있다고 가정할 수 있으므로 그대로 반환할 수 있습니다.
코드 실행 결과는 통과입니다. 100점 만점에 합격했습니다.

다른 분들의 솔루션을 보다가 indexOf()로 문제를 해결한 솔루션을 보았습니다. 그것은 훌륭했다..
https://school.programmers.co.kr/learn/courses/30/lessons/120921
프로그램 제작자
코드 중심 개발자를 고용하십시오. 배치 기반 위치 매칭. 프로그래머의 개발자별 프로필에 가입하고 기술 호환성이 좋은 회사와 연결하십시오.
Programmer.co.kr