
문제 자체는 단순하지만 같은 점수가 있을 때, 점수의 등수 중 가장 작은 등수가 된다는 문제의 조건을 잘 구현해야 한다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
int newScore = Integer.parseInt(st.nextToken());
int P = Integer.parseInt(st.nextToken());
if(N == 0) {
System.out.println(1);
return;
}
st = new StringTokenizer(br.readLine());
int answer = -1;
int prevScore = Integer.MAX_VALUE;
int remainingCnt = P;
int rank = 0;
for (int i=0; i<=N; i++) {
if (remainingCnt <= 0) break;
if (i == N) {
answer = prevScore == newScore ? rank : i+1;
break;
}
int curScore = Integer.parseInt(st.nextToken());
if (curScore < newScore) {
answer = prevScore == newScore ? rank : i+1;
break;
}
if (prevScore > curScore) { // 순위 갱신
rank = i+1;
}
prevScore = curScore;
remainingCnt--;
}
System.out.println(answer);
}
}
remainingCnt를 통해 체크한다.newScore보다 curScore가 작은 경우, newScore가 앞에 놓인다.