📌 문제 링크
https://www.acmicpc.net/problem/7568
📌 문제 탐색하기
- 몸무게와 키가 주어지고 각각의 크기가 더 크다면 덩치가 크다고 한다. 이때 덩치 순으로 등수를 구하여라. 중복 등수가 있다면 그만큼 다음 등수는 존재하지 않는다.
시간복잡도
- 이중 for문이 들어가 있어 O(n^2)
알고리즘 선택
- 브루트포스
📌 코드 설계하기
- 문제의 `input`을 공백으로 나누고 숫자로 변환합니다.
- 등수를 저장할 배열 `rank`을 선언합니다.
- 주어진 덩치 정보(몸무게, 키)를 순회할 반복문을 만듭니다.
- 등수를 나타내는 `grade` 변수를 선언하고 `1`을 할당합니다.
- 덩치 정보의 몸무게와 키에 접근하기 위해 또 하나의 반복문을 만듭니다.
- `if (i !== j)`으로 자기 자신과의 비교를 피합니다.
- 만약 몸무게와 키가 다음 배열의 몸무게와 키보다 크다면 `grade`를 `1`씩 올려줍니다.
- 등수 배열에 `grade`를 삽입합니다.
- 계산된 등수를 공백으로 구분하여 출력합니다.
📌 정답 코드
//https://www.acmicpc.net/problem/7568
export {};
const fs = require("fs");
const filePath =
process.platform === "linux" ? "/dev/stdin" : __dirname + "/input1.txt";
const [_, ...input] = fs
.readFileSync(filePath)
.toString()
.trim()
.split("\n")
.map((x: string) => x.split(" ").map(Number));
const rank = [];
for (let i = 0; i < input.length; i++) {
let grade = 1;
for (let j = 0; j < input.length; j++) {
if (i !== j) {
if (input[i][0] < input[j][0] && input[i][1] < input[j][1]) grade++;
}
}
rank.push(grade);
}
console.log(rank.join(" "));
'코딩 > 알고리즘' 카테고리의 다른 글
백준) 2775 - 부녀회장이 될테야 JS (2) | 2024.10.16 |
---|---|
백준) 2748 - 피보나치 수2 JS (0) | 2024.10.15 |
백준) 2578 - 빙고 JS (0) | 2024.10.14 |
백준) 2947 - 나무 조각 JS (0) | 2024.10.12 |
백준) 25305 - 커트라인 JS (0) | 2024.10.11 |