[백준 알고리즘] Node.js 7568. 덩치

2023. 8. 3. 13:55코딩연습

1. 문제

https://www.acmicpc.net/problem/7568

 

7568번: 덩치

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

www.acmicpc.net

 

2. 풀이

  1. 입력 첫째 줄에 N 명이 들어오고 이후 각 사람의 몸무게와 키의 배열이 들어온다.
  2. 덩치가 크다는 의미는 몸무게와 키 두가지 모두 다른 사람보다 큰 값을 가져야 한다.
const inputs = require('fs').readFileSync('/dev/stdin').toString().trim().split('\n');
const N = +inputs.shift();
const mans = inputs.map(v => v.split(' ').map(vv=> +vv));

// 사람들의 등수를 매기기 위한 배열. 기본값 1로 셋팅.
const rankMans = Array(N).fill(1);

// 한 사람을 기준으로 비교하기 위해 이중 for문 사용.
for(let i = 0; i < N; i++){
  for(let j = 0; j < N; j++){
    if(i === j) continue; // 같은 사람을 비교할 필요가 없으므로 continue;

	// 만약 비교된 대상의 키와 몸무게가 모두 작다면 그 사람의 등수 증가.
    if(mans[i][0] < mans[j][0] && mans[i][1] < mans[j][1]){
      rankMans[i]++;
    }
  }
}

// 결과값 출력.
console.log(rankMans.join(" "));

 

3. 정리

  • 처음에 동일한 등수를 가진다는 것에 당황했다. 하지만 브루트포스 알고리즘이라는 부분에서 힌트를 얻어 쉽게 해결한 문제였다. 
  • 아직 문제를 보고 어떤 방식으로 풀어나가야 할 지에 대한 생각이 바로 떠오르진 않는다. 좀 더 풀어보면 그래도 나아지지 않을까...........