코이팅

프로그래머스 [level 0] 문자열 밀기 - 자바(java) 본문

프로그래머스/lv0

프로그래머스 [level 0] 문자열 밀기 - 자바(java)

코이팅 2023. 1. 2. 18:40
728x90
반응형

[level 0] 문자열 밀기 - 120921

문제 링크

성능 요약

메모리: 73 MB, 시간: 1.27 ms

구분

코딩테스트 연습 > 코딩테스트 입문

채점결과


정확성: 100.0
합계: 100.0 / 100.0

문제 설명

문자열 "hello"에서 각 문자를 오른쪽으로 한 칸씩 밀고 마지막 문자는 맨 앞으로 이동시키면 "ohell"이 됩니다. 이것을 문자열을 민다고 정의한다면 문자열 A와 B가 매개변수로 주어질 때, A를 밀어서 B가 될 수 있다면 몇 번 밀어야 하는지 횟수를 return하고 밀어서 B가 될 수 없으면 -1을 return 하도록 solution 함수를 완성해보세요.


제한사항

  • 0 < A의 길이 = B의 길이 < 100
  • A, B는 알파벳 소문자로 이루어져 있습니다.

입출력 예

ABresult

"hello" "ohell" 1
"apple" "elppa" -1

입출력 예 설명

입출력 예 #1

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

입출력 예 #2

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

출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges

 

코딩테스트 연습 | 프로그래머스 스쿨

개발자 취업의 필수 관문 코딩테스트를 철저하게 연습하고 대비할 수 있는 문제를 총망라! 프로그래머스에서 선발한 문제로 유형을 파악하고 실력을 업그레이드해 보세요!

school.programmers.co.kr

 

🔴 나의 풀이

class Solution {
    public int solution(String A, String B) {
        int answer = 0;
        String copy = A;

        for (int i = 0; i < A.length(); i++) {
            if (copy.equals(B)) {
                return answer;
            }

            String a = copy.substring(copy.length() - 1);
            copy = a + copy.substring(0, copy.length() - 1);
            answer++;
        }

        return -1;
    }
}

 

1️⃣ 문자 끝 글자만 잘라 a에 대입합니다.

2️⃣ 끝 글자와 0부터 끝 글자 전까지 자른 문자를 더합니다.

3️⃣ 1, 2번을 A 길이만큼 반복합니다.

4️⃣ 만약 copy 문자와 B가 같다면 answer(문자를 민 횟수)를 리턴하고 없다면 -1을 리턴합니다.

728x90
반응형
Comments