[JAVA 문제 풀이] 88. 문자열 밀기

프로그래머스 (120921)
Stupefyee's avatar
Feb 17, 2025
[JAVA 문제 풀이] 88. 문자열 밀기
notion image

내가 작성한 코드

💡
class Solution { public int solution(String A, String B) { int answer = 0; if (A.equals(B)) return 0; // 이미 같은 경우 String temp = A; for (int i = 1; i < A.length(); i++) { // 마지막 글자 + 나머지 글자 >> 오른쪽으로 한칸 움직이기 temp = temp.charAt(temp.length() - 1) + temp.substring(0, temp.length() - 1); if (temp.equals(B)) { answer = i; // 오른쪽 이동 횟수 저장 break; } } temp = A; for (int i = 1; i < A.length(); i++) { // 나머지 글자 + 첫 글자 >> 왼쪽으로 한칸 움직이기 temp = temp.substring(1, temp.length()) + temp.charAt(0); if (temp.equals(B)) return Math.min(answer, i); // 오른쪽 이동과 횟수 비교후 작은 값 반환 } return -1; // 만들 수 없는 경우 } }
  1. 해당 코드로 진행 하면 테스트케이스 7번에서 오류 발생
    1. 오류 확인을 위해 변경한 코드 (이동 수 최소값 비교를 뺌)
      1. class Solution { public int solution(String A, String B) { if (A.equals(B)) return 0; String temp = A; for (int i = 1; i < A.length(); i++) { temp = temp.charAt(temp.length() - 1) + temp.substring(0, temp.length() - 1); if (temp.equals(B)) return i; } return -1; } }
    2. 정상 작동 확인
  1. 발생원인: 테스트케이스 7번에서 이동 수에 대한 최소값을 받지 않고 있음
    1. notion image
Share article

stupefyee