seunghyun Note
[백준] 1920번 : 수 찾기 with JS 본문
링크 : 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"));
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[백준] 2941번 :크로아티아 알파벳 with JS (0) | 2024.01.16 |
---|---|
[백준] 10988번 : 팰린드롬인지 확인하기 with JS (0) | 2024.01.16 |
[프로그래머스] 완주하지 못한 선수 (해시) with JS (0) | 2024.01.16 |
[백준] 코딩은 체육과목 입니다 with JS (1) | 2024.01.15 |
[프로그래머스] 의상 (해시) with JS (0) | 2024.01.15 |