Algorithm/백준

[백준] 17219 - 비밀번호 찾기 (Javascript / node)

jinseoit 2023. 11. 6. 23:59
문제

https://www.acmicpc.net/problem/17219

 

17219번: 비밀번호 찾기

첫째 줄에 저장된 사이트 주소의 수 N(1 ≤ N ≤ 100,000)과 비밀번호를 찾으려는 사이트 주소의 수 M(1 ≤ M ≤ 100,000)이 주어진다. 두번째 줄부터 N개의 줄에 걸쳐 각 줄에 사이트 주소와 비밀번

www.acmicpc.net

풀이
const fs = require("fs");
const filePath = process.platform === "linux" ? "/dev/stdin" : "./input.txt";
let input = fs.readFileSync(filePath).toString().trim().split("\n");
const [N, M] = input[0].split(" ").map(Number);
const passwordWithSite = {};
for(let i = 1; i<=N; i++){
  const [site, password] = input[i].split(" ");
  passwordWithSite[site] = password;
}
for(let i=N+1;i<=N+M; i++){
  const site = input[i];
  console.log(passwordWithSite[site]);
}

 

배열에 각 사이트들을 변수에 할당 후 해당 사이트를 찾을때마다 배열을 탐색한다면 시간복잡도가 O(N)이 될것이다 좀더 효율적으로 O(1)로 만들기 위해 객체 하나를 만들어 key, value로 저장후 해시처럼 site를 kye로 찾아 password를 출력한다.