[알고리즘] 백준 25192 인사성 밝은 곰곰이 (자바스크립트)

Subin·2022년 12월 22일
0
post-thumbnail
post-custom-banner

스택
인사성 밝은 곰곰이

✏️ 요구 사항 분석

인사성 밝은 곰곰이!
알고리즘 입문방 오픈 채팅방에서는 새로운 분들이 입장할 때마다 곰곰티콘을 사용해 인사한다. 임스가 채팅방 기록을 수집해 곰곰티콘이 사용된 횟수를 구하고자 한다.

  • ENTER 는 새로운 사람이 채팅방에 입장했음을 나타낸다.
  • 그 외에는 채팅을 입력한 유저의 닉네임이다.
  • 닉네임은 숫자 또는 영문 대소문자로 구성되어 있다.

🗒 내 풀이

function solution(data) {
  const CHAT_DATA = data.split("\n");
  const CHAT_SIZE = Number(CHAT_DATA.splice(0, 1).join(""));
  let duplicateList = new Set();
  let count = 0;
  for (let i = 1; i < CHAT_SIZE; i++) {
    if (!duplicateList.has(CHAT_DATA[i])) {
      duplicateList.add(CHAT_DATA[i]);
      if (CHAT_DATA[i] !== "ENTER") {
        count++;
      } else {
        duplicateList.clear();
      }
    }
  }
  return count;
}

const case1 = `9
ENTER
pjshwa
chansol
chogahui05
lms0806
pichulia
r4pidstart
swoon
tony9402
`;

const case2 = `7
ENTER
pjshwa
chansol
chogahui05
ENTER
pjshwa
chansol
`;

const case3 = `3
ENTER
lms0806
lms0806`;

console.log(solution(case1));
console.log(solution(case2));
console.log(solution(case3));

⌨️ 풀이 과정

1

!duplicateList.has(CHAT_DATA[i])

duplicateList에 유저가 있으면 반복문을 수행하지 않는다.

2

duplicateList.add(CHAT_DATA[i]);
if (CHAT_DATA[i] !== "ENTER") {
  count++;
} else {
  duplicateList.clear();
}

duplicateList에 유저를 추가하고 ENTER 즉 새로 입장한 사람이 발견되기 전까지 count를 1씩 증가시킨다(곰곰이 이모티콘 보낸 수)
그게 아니라면 새로 들어온 사람이 있으니 duplicateList를 초기화 시켜 곰곰이 이모티콘을 다시 셀 수 있게 한다.

profile
고양이가 세상을 지배한다.
post-custom-banner

0개의 댓글