[백준] - List of Unique Number (node.js)

밀루·2025년 4월 29일
0

BOJ

목록 보기
82/82

문제링크

풀이

투 포인터를 사용해 풀었다. left와 right이라는 이름의 포인터에서 right을 늘려가면서 visitedtrue로 바꿔주고, 해당 visitedtrue라면 중복되는 수가 있는 것이므로 left를 늘려주면서 visited[리스트[left]]false로 바꿔주는 것을 visited[리스트[right]]false가 될 때까지 반복한다.

코드

const fs = require("fs");
const filePath = process.platform === "linux" ? "/dev/stdin" : "./input.txt";
const input = fs.readFileSync(filePath).toString().trim().split("\n");

const n = Number(input[0]);
const l1 = input[1].split(" ").map(Number);

let left = 0;
let right = 0;
let visited = new Array(n + 1).fill(0);
let answer = 0;
while (left <= right) {
  if (right >= n) {
    break;
  }

  while (visited[l1[right]]) {
    visited[l1[left]] = 0;
    left++;
  }

  answer += right - left + 1;
  visited[l1[right]] = 1;
  right++;
}

console.log(answer);
profile
이밀루의 도전

0개의 댓글