728x90
난이도 : 실버5
풀이일 : 2403166
https://www.acmicpc.net/problem/10815
링크로 이동하기 귀찮은 분들을 위한 문제 캡쳐
풀이 코드
let input = require('fs').readFileSync('/dev/stdin').toString().split('\n');
const N = parseInt(input[0]);
// 카드를 저장할 배열
const set = new Set();
// 가지고 있는 카드 정보 Set에 추가
const cards = input[1].split(' ').map(Number);
for (let i = 0; i < N; i++) {
set.add(cards[i])
}
// 가지고 있는지 확인할 카드 정보
const M = parseInt(input[2]);
const target = input[3].split(' ').map(Number);
let result = '';
// 타겟이 Set에 들어있는지 확인 후 result에 결과 추가
for (let i = 0; i < M; i++) {
if (set.has(target[i])) {
result += '1 ';
}
else {
result += '0 ';
}
}
console.log(result);
- 입력되는 데이터의 양이 많으면 리스트 비교의 시간복잡도가 문제가 될 수 있으므로 Set 자료형 사용
- set : 가지고 있는 카드를 저장하는 Set
- target : 가지고 있는지 확인할 숫자들. 순서를 유지하기 위해 배열 자료형 유지
- target의 길이만큼 순회하며 각 요소가 set에 있는지 확인
느낀점
- 자바 스크립트로 Set은 처음 써보는 것 같다. 프로젝트 할때 당장 결과물을 만들기 위해서만 코딩을 급하게 했었는데, 이런 특성을 알고 충분히 고민해서 코딩했으면 더 효율적이었을 것 같다. 지금부터라도 기초를 다시 채워봐야지
'알고리즘 > 🥈 실버' 카테고리의 다른 글
백준 15665 N과 M(11) 자바 풀이 (0) | 2024.03.13 |
---|---|
백준 15664 N과 M (10) 자바 풀이 (0) | 2024.03.07 |
백준 15663 N과 M (9) 자바 풀이 (0) | 2024.03.03 |
백준 15657 N과 M (8) 자바 풀이 (0) | 2024.03.02 |
백준 15656 N과 M (7) 자바 풀이 (0) | 2024.02.29 |