본문 바로가기
프로그래머스/[프로그래머스 - JAVA] Lv.0

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

by 코딩하는 흰둥이 2023. 3. 17.
반응형


입출력 예

A B result
"hello" "ohell" 1
"apple" "elppa" -1
"atat" "tata" 1
"abc" "abc" 0

입출력 예 설명

입출력 예 #1

  • "hello"를 오른쪽으로 한 칸 밀면 "ohell"가 됩니다.

 

입출력 예 #2

  • "apple"은 몇 번을 밀어도 "elppa"가 될 수 없습니다.

입출력 예 #3

  • "atat"는 오른쪽으로 한 칸, 세 칸을 밀면 "tata"가 되므로 최소 횟수인 1을 반환합니다.

입출력 예 #4

  • "abc"는 밀지 않아도 "abc"이므로 0을 반환합니다.

  • 내 풀이
class Solution {
    public int solution(String A, String B) {
        int answer = 0;
        
        // A 를 비교하는 문자열
        String Acopy = A;

        for (int i = 0; i < A.length(); i++) {
            // 오른쪽으로 밀게 없으면 0
            if (Acopy.equals(B)){
                break;
            }

            // 마지막 글자만 가져옴
            String word = Acopy.substring(A.length() - 1);

            // 마지막 글자 + 비교문자열의 0번째부터 마지막에서 -1로  마지막 글자를 앞으로 보내주는 역할을 함
            Acopy = word + Acopy.substring(0, A.length() -1);

            // 한칸 밀었기 때문에 ++
            answer++;
            
        }
        // 밀기만 하고 같은 문자가 없으면
        if (answer == A.length()){
            answer = -1;
        }
        return answer;
    }
}

삽질 엄청 하다가 단순하게 글자 잘라서 붙이면 되는걸 뒤늦게 깨달음....

 

  • 다른 사람 풀이
class Solution {
    public int solution(String A, String B) {
        String tempB = B.repeat(3);
        return tempB.indexOf(A);
    }
}

class Solution {
    public int solution(String A, String B) {

        return (B+B).indexOf(A);
    }
}

댓글