ABC154 C - Distinct or Not
備忘録
問題
回答
"use strict" function Main(input) { input = input.trim().split('\n'); const N = Number(input[0].trim()); const A = input[1].trim().split(' ').map(Number); let map = {}; let ret = 'YES'; for(let i=0; i<N; i++){ map[A[i]] = map[A[i]] ? map[A[i]] + 1 : 1; } for(let k in map){ if(map[k] > 1){ ret = 'NO'; break; } } console.log(ret); } Main(require("fs").readFileSync("/dev/stdin", "utf8"));
考え方
整数列の値で同じ値の要素が存在するか否かを判定する問題。
頭から順に、整数列の値をkey
とし、value
を要素数としたオブジェクトを作り、
そこからすべてのkey
に対してvalue
が1を超えるか否かで判定を行った。
要素の値から自身の配列に対して
filter
で同じ値が存在するか否かを探索したらLTEになったため、上記の方法に修正した。
回答(LTE) : Submission #9987530 - AtCoder Beginner Contest 154
なんとかコンテスト中にLTEを回避する回答を行うことが出来たが、
公式解説のPDFで回答例に出されているソートを利用する方法など思いつけるようになりたい。