티스토리 뷰
title: "순위"
category: 프로그래머스[Level-3]
tags: [C++, JavaScript, 프로그래머스]
date: "2021-02-08"
문제 링크
C++
#include <string>
#include <vector>
#include <iostream>
using namespace std;
int solution(int n, vector<vector<int>> results) {
int answer = 0;
// init
vector<vector<bool>> record(n+1, vector<bool>(n+1, false));
for(auto r: results) record[r[0]][r[1]]=true; // r[0]이 r[1]을 이긴다.
for(int k=1; k<=n; k++){
for(int i=1; i<=n; i++){
for(int j=1; j<=n; j++){
if(record[i][k]&&record[k][j]){
// i가 k를 이기고 k가 j를 이길 경우
record[i][j]=true; // i도 j를 이긴다.
}
}
}
}
for(int i=1; i<=n; i++){
int count=0;
for(int j=1; j<=n; j++){
if(record[i][j]||record[j][i]) count++; // i가 j를 이기거나 j에게 졌을 경우
}
if(count==n-1) answer++;
}
return answer;
}
JavaScript
function solution(n, results) {
var answer = 0;
// init
const record = Array.from({ length: n + 1 }, () =>
Array.from({ length: n + 1 }, () => false)
);
results.forEach((v) => {
// v[0]이 v[1]을 이긴다
record[v[0]][v[1]] = true;
});
for (let k = 1; k <= n; k++) {
for (let i = 1; i <= n; i++) {
for (let j = 1; j <= n; j++) {
if (record[i][k] && record[k][j]) {
// i가 k를 이기고 k가 j를 이기면
record[i][j] = true; // i가 j를 이긴다.
}
}
}
}
for (let i = 1; i <= n; i++) {
let cnt = 0;
for (let j = 1; j <= n; j++) {
if (record[i][j] || record[j][i]) cnt++;
}
if (cnt === n - 1) answer++; // i가 모든 경기를 한 것과 같을 때
}
return answer;
}
728x90
반응형
'Programmers Solutions > Level-3' 카테고리의 다른 글
[프로그래머스] 광고 삽입 (3) | 2021.02.10 |
---|---|
[프로그래머스] 합승 택시 요금 (0) | 2021.02.08 |
[프로그래머스] 베스트앨범 (0) | 2021.02.07 |
[프로그래머스] 입국심사 (0) | 2021.02.06 |
[프로그래머스] 이중우선순위큐 (0) | 2021.02.06 |
댓글