View

반응형

 

알고리즘 분류: 구현

문제 링크: https://www.acmicpc.net/problem/1205

 

1205번: 등수 구하기

첫째 줄에 N, 태수의 새로운 점수, 그리고 P가 주어진다. P는 10보다 크거나 같고, 50보다 작거나 같은 정수, N은 0보다 크거나 같고, P보다 작거나 같은 정수이다. 그리고 모든 점수는 2,000,000,000보

www.acmicpc.net

 

 

 

 

【 풀이 】

 

  1. 점수의 개수(n), 태수의 새로운 점수(score), 랭킹 범위(r) 선언
  2. 랭크를 저장할 변수(rank_count) 선언
  3. 랭킹 리스트 입력 받기
  4. 랭킹을 순회한다. -> 기존 점수보다 새로운 점수가 작으면 rank_count +1
  5. 점수가 같으면 rank_count 유지
  6. 배열 범위에서 벗어나는 점수이면 rank_count = -1
  7. 랭킹 리스트에 점수가 아무것도 없다면 rank_count = 1
  8. 최종 rank_count 출력

 

 

【 코드 】

#include<iostream>
using namespace std;

int ranking[51];

int main() {

	int n;		// 점수의 개수
	int score;	// 태수의 새로운 점수
	int r;		// 랭킹 범위

	int cnt = 0;
	int rank_count = 1;

	cin >> n >> score >> r;

	// 배열 -1로 초기화
	for (int i = 0; i < r; i++) { ranking[i] = -1; }
	
	// 랭킹 리스트 입력 받기
	for (int i = 0; i < n; i++) { cin >> ranking[i]; }

	for (int i = 0; i < n; i++) {
		// 1. 랭킹을 순회할 때 기존 점수보다 새로운 점수가 작으면 +1
		// 2. 점수가 같으면 랭크 유지
		if	(score < ranking[i])	{ rank_count++; }
		else if (score == ranking[i])	{ rank_count = rank_count; }
		else break;
		cnt++;
	}

	// 배열 범위에 안들어가면 -1
	// 랭킹에 점수가 아무것도 없다면 1
	if (cnt == r)	rank_count = -1;
	if (n == 0)	rank_count = 1;

	cout << rank_count;

	return 0;
}

 

 

 

728x90
반응형
Share Link
reply
250x250
반응형
«   2024/10   »
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