문자열 "hello"에서 각 문자를 오른쪽으로 한 칸씩 밀고 마지막 문자는 맨 앞으로 이동시키면 "ohell"이 됩니다. 이것을 문자열을 민다고 정의한다면 문자열 A와 B가 매개변수로 주어질 때, A를 밀어서 B가 될 수 있다면 밀어야 하는 최소 횟수를 return하고 밀어서 B가 될 수 없으면 -1을 return 하도록 solution 함수를 완성해보세요.
import java.util.ArrayList;
import java.util.List;
class Solution {
public int solution(String A, String B) {
int answer = -1;
List<String> possibleList=new ArrayList<>();
for (int i = 0; i < A.length(); i++) {
String a=A.substring(A.length()-i,A.length())+A.substring(0,A.length()-i);
System.out.println(a);
possibleList.add(a);
}
for (int i = 0; i < A.length(); i++) {
if(B.equals(possibleList.get(i))){
answer=i;
break;
}
}
return answer;
}
}
후 계속 인텔리제이에서 구동해보면서 조금씩 고쳐가면서 풀었다.
subString 하면서 자리 지정하는게 자꾸 헷갈려서 조금씩 바꾸면서
실행하고 또 바꾸면서 실행하니 결국 풀었다.
일단 풀이는 A 변수에 자리가 밀리면서 나올수있는 모든 문자열을 저장하는 리스트를 만들고
그 리스트 원소랑 B 가 같고 같을때 i 가 그만큼 밀은 횟수 이니 그걸 반환해주면 된다.!
'자바 알고리즘 문제' 카테고리의 다른 글
| 배열 만들기 2 (0) | 2024.03.31 |
|---|---|
| 특이한 정렬 (0) | 2024.03.31 |
| 치킨 쿠폰 (0) | 2024.03.28 |
| 등수 매기 (0) | 2024.03.28 |
| 전국 대회 선발 고사 (0) | 2024.03.27 |