[ALGO] Programmers

프로그래머의 코딩 테스트 입문 문제에서 ‘스트링 푸시’ 문제를 풀었습니다.

지정된 문자열 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