const fs
= require
(
'fs'
);
const input
= fs
.readFileSync
(
'/dev/stdin'
).toString
().trim
().split
(
"\n"
);
const
N
=
+input
[
0
];
let score
=
[];
// 회차 별 점수
let sum
=
Array
.
from
({length
:
N
},
()
=>
0
);
// 점수 합계
for
(
let i
=
1
; i
< input
.length
; i
++)
{
score
.push
(input
[i
].trim
().split
(
" "
).map
(
Number
));
};
// 회차 별 등수 출력
for
(
let point
of score
)
{
let dic
=
{};
let idx
=
0
;
let pointCopy
=
JSON
.parse
(
JSON
.stringify
(point
));
// 회차 별 등수 깊은 복사
point
.sort
((a
, b
)
=> b
- a
);
// 점수 내림차순 정렬
for
(
let sc
of point
)
{
idx
+=
1
;
if
(sc
in dic
===
false
) dic
[sc
]
= idx
;
};
let arr
=
[];
for
(
let i
=
0
; i
< pointCopy
.length
; i
++)
{
arr
.push
(dic
[pointCopy
[i
]]);
sum
[i
]
+= pointCopy
[i
];
};
console
.log
(...arr
);
};
console
.log
(...sum_rank
());
// 최종 점수 별 등수 출력
function sum_rank
()
{
let sumdic
=
{};
let sumidx
=
0
;
let sumCopy
=
JSON
.parse
(
JSON
.stringify
(sum
));
// 회차 별 등수 깊은 복사
sum
.sort
((a
, b
)
=> b
- a
);
// 점수 내림차순 정렬
for
(
let sc
of sum
)
{
sumidx
+=
1
;
// 점수가 존재하지 않을 때만 등수 입력
if
(sc
in sumdic
===
false
) sumdic
[sc
]
= sumidx
;
};
let sumarr
=
[];
for
(
let i
=
0
; i
< sumCopy
.length
; i
++)
{
sumarr
.push
(sumdic
[sumCopy
[i
]]);
};
return sumarr
;
};