일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 14656번
- 25576번
- 프로젝트 기획서
- 1333번
- 25642번
- Baekjoon
- 자바
- 1568번
- 25904번
- 1141번
- 24267번
- 10409번
- 21964
- 1362번
- 14467번
- 14215번
- 14726번
- 백준
- 5597번
- 7489번
- 티스토리챌린지
- 2355번
- 20953번
- 21866번
- 오블완
- 나무 공격
- 14592번
- 10814번
- 14322번
- Java
- Today
- Total
suheang
[백준] | JAVA, 자바 | 1205번 - 등수 구하기 본문
https://www.acmicpc.net/problem/1205
1205번: 등수 구하기
첫째 줄에 N, 태수의 새로운 점수, 그리고 P가 주어진다. P는 10보다 크거나 같고, 50보다 작거나 같은 정수, N은 0보다 크거나 같고, P보다 작거나 같은 정수이다. 그리고 모든 점수는 2,000,000,000보
www.acmicpc.net
문제 요약 :
태수가 즐겨하는 디제이맥스 게임은 각각의 노래마다 랭킹 리스트가 있다. 이것은 매번 게임할 때 마다 얻는 점수가 비오름차순으로 저장되어 있는 것이다.
이 랭킹 리스트의 등수는 보통 위에서부터 몇 번째 있는 점수인지로 결정한다. 하지만, 같은 점수가 있을 때는 그러한 점수의 등수 중에 가장 작은 등수가 된다.
랭킹 리스트에 올라 갈 수 있는 점수의 개수 P가 주어진다. 그리고 리스트에 있는 점수 N개가 비오름차순으로 주어지고, 태수의 새로운 점수가 주어진다. 이때, 태수의 새로운 점수가 랭킹 리스트에서 몇 등 하는지 구하는 프로그램을 작성하시오. 만약 점수가 랭킹 리스트에 올라갈 수 없을 정도로 낮다면 -1을 출력한다.
만약, 랭킹 리스트가 꽉 차있을 때, 새 점수가 이전 점수보다 더 좋을 때만 점수가 바뀐다.
( 문제의 정답을 출력 )
문제 풀이 :
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public 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;
}
int[] rank = new int[p];
st = new StringTokenizer(br.readLine());
for (int i = 0; i < n; i++) {
rank[i] = Integer.parseInt(st.nextToken());
}
if (n == p && newScore <= rank[n - 1]) {
System.out.println(-1);
return;
}
int result = 1;
for (int i = 0; i < n; i++) {
if (newScore >= rank[i]) {
result = i + 1;
break;
} else {
result++;
}
}
if (result <= p) {
System.out.println(result);
} else {
System.out.println(-1);
}
}
}
1. n, 새로운 점수, p 입력받기
2. n이 0이면 1을 출력하고 종료
3. p의 크기를 가진 배열 생성, n 만큼 점수 입력받기
4. n의 값이 p의 값과 같고 새로운 점수가 마지막에 입력받은 점수보다 작거나 같을 때 -1 출력 후 종료
5. 변수 result를 생성하고 값에 1 저장
6. newScore가 rank[i] 보다 크거나 같으면 result에 i + 1값을 저장하고 for문 종료, 그렇지 않다면 result++
7. 만약 result의 값이 p 보다 작거나 같다면 result 출력, 그렇지 않다면 -1 출력
'알고리즘' 카테고리의 다른 글
[백준] | JAVA, 자바 | 1094번 - 막대기 (0) | 2024.04.24 |
---|---|
[백준] | JAVA, 자바 | 1072번 - 게임 (0) | 2024.04.24 |
[백준] | JAVA, 자바 | 1235번 - 학생 번호 (0) | 2024.04.23 |
[백준] | JAVA, 자바 | 1371번 - 가장 많은 글자 (0) | 2024.04.22 |
[백준] | JAVA, 자바 | 1100번 - 하얀 칸 (0) | 2024.04.22 |