ABC154 C - Distinct or Not

備忘録

問題

atcoder.jp

回答

"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で回答例に出されているソートを利用する方法など思いつけるようになりたい。