이끌든지 따르든지 비키든지

Today I Learned/프로그래머스

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

SeongHo5 2023. 9. 21. 20:52

프로그래머스 코딩 테스트 연습 문제 -  문자열 밀기 / JAVA 풀이 정리

https://school.programmers.co.kr/learn/courses/30/lessons/120921

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


방법 1

public int solution(String A, String B) {
	        return (B + B).indexOf(A);
}

 

문자열 B를 2번 반복해 이어 붙인 다음 문자열 A가 나타나는 위치(인덱스를) 찾는다.

끝까지 밀어도 A를 찾을 수 없다면 -1, 같다면 0을 반환하므로 다른 조건도 완벽히 만족


방법 2

public int solution(String A, String B) {
        int answer = -1;
        String temp = A;
        for(int i = 0 ; i < A.length() ; i++){
            if(temp.equals(B)){
                answer = i;
                break;
            }
            // (현재 문자열에서 마지막 글자) + (처음부터 마지막에서 두번째 글자)
            temp = temp.charAt(A.length()-1) + temp.substring(0, A.length()-1);
        }
        return answer;
    }
}
  1. 밀어야하는 횟수를 -1로 초기화하고 시작 (조건 : 밀어도 만들 수 없으면 return -1)
  2. 문자열 A를 temp에 담는다.
  3. 임시 문자열 temp를 규칙에 맞게 새로 생성하면서 B와 비교한다.
  4. B와 같아질 때의 index값을 찾으면 answer에 저장하고 반복문 종료

JavaScript 코드 보기

더보기
function solution(A, B) {
  return (B + B).indexOf(A);
}