Description
배열이 각 요소가 바로 이전 요소보다 한칸 앞으로 swap 할 수 있고 최대 두칸까지만 전진 할 수 있다고 할때 주어진 결과가 몇번만에 이동이 가능한지 여부와 가능 여부를 출력하는 문제입니다.
Solution 1. Arrays
public static void minimumBribes(List<Integer> q) {
// Write your code here
for (int i = 0; i < q.size(); i++) {
if(q.get(i) > i+1+2){
System.out.println("Too chaotic");
return;
}
}
int cnt = 0;
for (int i = 0; i < q.size(); i++) {
if(q.get(i) > i+1){
for (int j = i+1; j < q.size(); j++) {
int temp = q.get(i);
q.set(i,q.get(j));
q.set(j,temp);
cnt++;
if(q.get(i) == i+1) break;
}
}
}
System.out.println(cnt);
}
먼저 인덱스보다 최대 두칸이상 진행된 요소가 있다면 해당 케이스는 불가능하기 때문에 Too chaotic을 반환해 줍니다. 이후 맨 앞의 요소 부터 진행하며 현재 인덱스에 맞는 요소가 아닐 경우 해당 값이 아프로 올때까지 뒤로 swap해주며 카운팅 해나갑니다.
Reference
'알고리즘 > HackerRank' 카테고리의 다른 글
[HackerLank] Merge two sorted linked lists - 문제풀이 (0) | 2022.03.25 |
---|---|
[HackerLank] Truck Tour - 문제풀이 (0) | 2022.03.25 |
[HackerLank] Recursive Digit Sum - 문제풀이 (0) | 2022.03.25 |
[HackerLank] Grid Challenge - 문제풀이 (0) | 2022.03.16 |
[HackerLank] Palindrome Index - 문제풀이 (2) | 2022.03.16 |