내가 구현한 복잡하고 이상한 코드 심지어 예제는 맞으나
정답은 틀리게 나온다.
오래 고민했지만 잘못된 접근인거 같아 방법을 찾아보고
힌트를 얻어 다시 풀어보고자 한다.
import java.util.*;
import java.io.*;
class Main{
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st = null;
int T = Integer.parseInt(br.readLine());
for(int i=0; i<T;i++){
int result =0;
st = new StringTokenizer(br.readLine()," ");
int[] prior = new int[10];
ArrayList<Integer> print = new ArrayList<>();
int wait = Integer.parseInt(st.nextToken());
int target_index = Integer.parseInt(st.nextToken());
st = new StringTokenizer(br.readLine()," ");
for(int j=0;j<wait;j++){
int Q = Integer.parseInt(st.nextToken());
prior[Q]+=1;
print.add(Q);
}
boolean break_tag =false;
for(int j=9;j>=1;j--){
while(prior[j]>0){
if(print.get(0)==j){
print.remove(0);
result++;
target_index--;
prior[j]--;
if(target_index==-1) {
break_tag = true;
break;
}
} else {
print.add(print.get(0));
print.remove(0);
target_index--;
if(target_index==-1) target_index = print.size()-1;
}
if(break_tag==true) break;
}//if
}//for
bw.write(Integer.toString(result)+"\n");
}
bw.flush();
bw.close();
br.close();
}
}
아래의 방법으로 성공
단순한 문제인데 코드가 나름 복잡하다.
import java.util.*;
import java.io.*;
class Main{
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st = null;
int T = Integer.parseInt(br.readLine());
while(T-- >0){
st=new StringTokenizer(br.readLine()," ");
int M = Integer.parseInt(st.nextToken());
int N = Integer.parseInt(st.nextToken());
LinkedList<int[]> q = new LinkedList<>();
st = new StringTokenizer(br.readLine()," ");
for(int i=0;i<M;i++){
q.offer(new int[]{i,Integer.parseInt(st.nextToken())});
}
int count=0;
while(!q.isEmpty()) {
int[] front = q.poll();
boolean tag = false;
for (int i = 0; i < q.size(); i++) {
if (front[1] < q.get(i)[1]) {
q.offer(front);
for (int j = 0; j < i; j++) {
q.offer(q.poll());
}
tag = true;
break;
}
}
if (tag == true) continue;
if(tag==false) {
count++;
if (front[0] == N) {
bw.write(Integer.toString(count)+"\n");
break;
}
}
}
}
bw.flush();
bw.close();
br.close();
}
}