on
7568 - 덩치(브루트포스)
7568 - 덩치(브루트포스)
# 주소
https://www.acmicpc.net/problem/7568
# 문제
# 문제 해설 및 코드 리뷰
import java.util.*; public class Main{ public static void main(String[] args) { Scanner scan = new Scanner(System.in); int n = scan.nextInt(); int[] weight = new int[n]; int[] tall = new int[n]; for(int i = 0; i < n; i++) { weight[i] = scan.nextInt(); tall[i] = scan.nextInt(); } int rank; int[] dp = new int[n]; for(int i = 0; i < n; i++){ rank = 1; for(int j = 0; j < n; j++){ if(weight[j] > weight[i] && tall[j] > tall[i]) { rank++; } } dp[i] = rank; } for(int i = 0; i < n; i++) System.out.println(dp[i]); } }
브루트포스 문제 중 가장 간단한 문제입니다.
일단 wieght와 tall 배열(각각 무게와 키)를 int타입으로 선언하고 Scanner를 통해 입력받습니다.
이후 rank의 값을 dp[]에 저장하며 각각의 등급을 측정하는 문제입니다.
브루트포스는 대부분 이중for문 또는 while을 사용해서 푸는 경우가 많으므로 숙지합니다.
rank는 for문이 한 번 끝날 때마다 1로 선언합니다.
그리고 해당 weight[i]와 tall[i]보다 큰 인덱스j값이 존재한다면 rank를 증가시킵니다.
그리고 rank를 dp의 해당 인덱스에 넣고 계속해서 for문을 실행합니다.
이 문제의 핵심은 무게와 키가 다를지라도 둘 다 크거나 둘 다 낮을때만 덩치의 등급이
나뉜다는 것을 숙지하고 있으면 해결할 수 있으실거라 생각합니다.
출력문도 정상적으로 출력되는 것을 확인할 수 있습니다.
감사합니다.
from http://codingrapper.tistory.com/50 by ccl(A) rewrite - 2021-10-13 00:01:21