seunghyun Note

[백준] 1920번 : 수 찾기 with JS 본문

코딩테스트/프로그래머스

[백준] 1920번 : 수 찾기 with JS

승숭슝현 2024. 1. 16. 15:21

링크 : https://www.acmicpc.net/problem/1920

 

1920번: 수 찾기

첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들

www.acmicpc.net

문제 풀이

이진트리, 2중 for문(시간 초과로 문제 해결이 안 된다.) 등 다양한 방법이 있지만 해시를 공부하기 때문에 해시를 사용하고 싶었다.

Set의 객체를 사용하여 has를 사용할 것이다. set 중에서도 set.has를 이용해서 포함 여부를 확인한다.
Set.prototype.has()
has() 메서드는 Set 객체에 주어진 요소가 존재하는지 여부를 판별해 반환한다.

const set1 = new Set([1, 2, 3, 4, 5]);

console.log(set1.has(1));
// Expected output: true

console.log(set1.has(5));
// Expected output: true

console.log(set1.has(6));
// Expected output: false

MDN 참고

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Set/has

 

Set.prototype.has() - JavaScript | MDN

has() 메서드는 Set 객체에 주어진 요소가 존재하는지 여부를 판별해 반환합니다.

developer.mozilla.org

1. input data 0,2는 사실 필요가 없는거 같다(배열의 크기)

2. arr2 배열을 순회하면서 arr1이 있는지 확인 하는 것이기 때문에 arr1을 set한 값을 저장한다.

3. arr2 배열을 순회하면서 set.has를 이용해 여부를 확인 후 있으면 1 없으면 0을 반환해서 result배열에 push 한다.

const fs = require("fs");

const input = fs.readFileSync("예제.txt").toString().split("\n");

const arr1 = input[1].split(" ");
const arr2 = input[3].split(" ");

let set = new Set(arr1);
let result = [];

arr2.forEach((element) => {
  result.push(set.has(element) ? 1 : 0);
});

console.log(result.join("\n"));

 

728x90