Poylib
기록형 프론트엔드
Poylib
전체 방문자
오늘
어제
  • 분류 전체보기 (91)
    • Programing (38)
      • Javascript (17)
      • Typescript (1)
      • React (9)
      • React-Native (6)
      • Git (4)
      • Next (1)
    • Study (36)
      • Algorithm (35)
      • Etc. (1)
    • Record (17)
      • Memoirs (12)
      • Group (5)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • typescript
  • Git
  • javascript
  • react
  • 코칭스터디
  • ReactNative
  • 백준
  • Object
  • 알고리즘
  • Error
  • 프로그래머스
  • 기초
  • 리액트
  • vite
  • 회고
  • react-native
  • 코딩테스트
  • 자바스크립트

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Poylib

기록형 프론트엔드

[BEAKJOON / node.js] 26069 붙임성 좋은 총총이
Study/Algorithm

[BEAKJOON / node.js] 26069 붙임성 좋은 총총이

2022. 11. 19. 23:41
https://www.acmicpc.net/problem/26069

// test.txt
12
bnb2011 chansol
chansol chogahui05
chogahui05 jthis
jthis ChongChong
jthis jyheo98
jyheo98 lms0806
lms0806 pichulia
pichulia pjshwa
pjshwa r4pidstart
r4pidstart swoon
swoon tony9402
tony9402 bnb2011

 


Sol 1

const [N, ...input] = require("fs")
  .readFileSync("test.txt")
  .toString()
  .trim()
  .split("\n");

let arr = input.map((v) => v.split(" "));
let dance = ["ChongChong"];
for (let i = 0; i < N; i++) {
  for (let j = 0; j < dance.length; j++) {
    if (arr[i].includes(dance[j])) {
      arr[i].forEach((el) => dance.push(el));
      break;
    }
  }
}
let answer = dance.filter((el, i) => dance.indexOf(el) === i).length;
console.log(answer);

 

이중 for문을 통해 dance배열과 기록 하나를 비교한다. 기록에 dance 배열에 속한 사람이 있다면 일단 둘 다 dance 배열에 넣어둔 다음 마지막에 filter를 통해 중복을 제거해준다.

 

sol 2

const [_, ...input] = require("fs")
  .readFileSync("test.txt")
  .toString()
  .trim()
  .split("\n");
let arr = input.map((v) => v.split(" "));
let dance = new Set();
dance.add("ChongChong");
arr.forEach((v) => {
  if (dance.has(v[0]) || dance.has(v[1])) {
    dance.add(v[0]);
    dance.add(v[1]);
  }
});
console.log(dance.size);

첫 번째 방법은 일단 춤을 춘 사람이면 모두 dance 배열에 넣고 중복을 제거하는 작업을 한 번 더 해야 했다. 처음부터 중복해서 dance에 들어가지 않도록 Set을 사용해 size로 길이만 출력해주었다.


결과적으로 Set을 이용한 방법이 동일한 메모리를 사용하지만 더 빠르게 해결된다. 

저작자표시 비영리 변경금지 (새창열림)

'Study > Algorithm' 카테고리의 다른 글

[programmers / JavaScript] 햄버거 만들기  (0) 2023.07.07
[programmers / JavaScript] 연속된 수의 합  (0) 2022.11.17
[BEAKJOON / node.js] 16120 PPAP  (0) 2022.07.11
[BEAKJOON / node.js] 11509 풍선 맞추기  (0) 2022.07.06
[BEAKJOON / node.js] 1946 신입 사원  (0) 2022.07.04
    'Study/Algorithm' 카테고리의 다른 글
    • [programmers / JavaScript] 햄버거 만들기
    • [programmers / JavaScript] 연속된 수의 합
    • [BEAKJOON / node.js] 16120 PPAP
    • [BEAKJOON / node.js] 11509 풍선 맞추기
    Poylib
    Poylib
    모시깽 기록

    티스토리툴바