본문 바로가기
백준알고리즘

백준알고리즘:p7568 덩치

by socialcomputer 2021. 3. 6.

분류: 브루트포스

 

문제

 

코드1

//백준알고리즘 제출시 클래스 이름은 Main으로 바꿔야 됨 
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;

public class p7568 {

	public static void main(String[] args) {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		try {
		int number = Integer.parseInt(br.readLine());
		int[][] arr = new int[number][3];
		for(int i=0; i<number; i++) { //배열에 넣고 arr[][2]자리엔 등수를 넣을 거임
			StringTokenizer st = new StringTokenizer(br.readLine(), " ");
			arr[i][0] = Integer.parseInt(st.nextToken()); 
			arr[i][1] = Integer.parseInt(st.nextToken());
			arr[i][2] = 1;
		}
		
		for(int i=0; i<number; i++) {
			for(int j=0; j<number; j++) {
				if(i==j) continue;
				if(arr[i][0]>arr[j][0] && arr[i][1]>arr[j][1]) arr[j][2] += 1; //등수를 더해서 내림..
			}
		}
		for(int i=0; i<number; i++) {
			bw.write(arr[i][2]+"\n");
		}
		bw.flush();
		}catch (Exception e) {e.printStackTrace();}
	}

}

 

▶처음에 한 방법 : (첫번째 코드) 각 케이스를 배열에 넣는데 세번째에는 각 등수를 저장해서 나중에 등수만 쫘라락 출력함.

코드1

package bruteForce;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;

public class p7568 {

	public static void main(String[] args) {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		StringTokenizer st;
		try {
		int number = Integer.parseInt(br.readLine());
		int[][] arr = new int[number][2];
		for(int i=0; i<number; i++) { //배열에 넣고 arr[][2]자리엔 등수를 넣을 거임--수정됨: rank로 바로바로 출력하기로함
			st = new StringTokenizer(br.readLine(), " ");
			arr[i][0] = Integer.parseInt(st.nextToken()); 
			arr[i][1] = Integer.parseInt(st.nextToken());
		}
		
		for(int i=0; i<number; i++) {
			int rank=1;
			for(int j=0; j<number; j++) {
				if(i==j) continue;
				if(arr[i][0]<arr[j][0] && arr[i][1]<arr[j][1]) rank += 1; //비교할 것보다 작으면 i의 rank에 +1하기
			}
			bw.write(rank+"\n");
		}
		bw.flush();
		}catch (Exception e) {e.printStackTrace();}
	}

}

▶두번째 한 방법 : (두번째 코드) 각각의 등수를 저장해두지 않고 바로바로 rank로 출력

 

 

 


채점결과

 

링크 www.acmicpc.net/problem/7568

 

7568번: 덩치

우리는 사람의 덩치를 키와 몸무게, 이 두 개의 값으로 표현하여 그 등수를 매겨보려고 한다. 어떤 사람의 몸무게가 x kg이고 키가 y cm라면 이 사람의 덩치는 (x, y)로 표시된다. 두 사람 A 와 B의 덩

www.acmicpc.net

 

댓글