Javadocs

[ Programmers ] 문자열 밀기 (Java) 본문

SelfStudy/Programmers(코딩테스트)

[ Programmers ] 문자열 밀기 (Java)

Javatist 2023. 3. 17. 14:24

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

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

[ 입출력 예 ]

ABresult
"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을 반환합니다.

[ 풀이 ]

public class StringPush {
	public int solution(String A, String B) {
        int answer = 0;
        
        for (int i = 0; i < A.length(); i++) {
        	if (A.equals(B)) {		// 문자열 A, B를 비교해서 같으면 0을 return.
        		return answer;
        	}
        	String a = A.substring(A.length() -1);		// 문자열 A의 맨 마지막 글자를 a에 저장.
        	// 변수 a에 담은 글자 + 맨 마지막 글자를 제외한 글자를 합한 문자를 A에 다시 저장
            A = a + A.substring(0,A.length() - 1);		
        	answer++;
	      	//System.out.println(answer);
        }
        return -1;
    }
	
/*	 public static void main(String[] args) {
		String A = "Hello";
		String B = "loHel";
		System.out.println(solution(A, B));
	}*/
}

문자열 자르기 - substring();

substring() 메소드는 문자열의 특정 부분을 잘라내는데 사용한다.
substring() 메소드는 2가지 형태로 사용 가능하다.

  1. substring(int startIndex);
  2. substring(int startIndex, int endIndex);

substring(int startIndex); -  startIndex부터 끝까지의 문자열을 리턴한다.

public class SubstringPractice {
	public static void main(String[] args) {
    	
        String str = "Hello";
        
        System.out.println(str.substring(2));	// "llo"
    }
}

substring(int startIndex, int endIndex); - startIndex(포함)부터 endIndex(불포함)까지의 문자열을 리턴.

public class SubstringPractice {
    public static void main(String[] args) {
 
        String str = "Hello";
 
        System.out.println(str.substring(2, 4)); // "ll"
        System.out.println(str.substring(2, str.length())); // "llo"
 
    }
}
Comments