https://www.acmicpc.net/problem/25192
문제
알고리즘 입문방 오픈 채팅방에서는 새로운 분들이 입장을 할 때마다 곰곰티콘을 사용해 인사를 한다. 이를 본 문자열 킬러 임스는 채팅방의 기록을 수집해 그 중 곰곰티콘이 사용된 횟수를 구해 보기로 했다.
ENTER는 새로운 사람이 채팅방에 입장했음을 나타낸다. 그 외는 채팅을 입력한 유저의 닉네임을 나타낸다. 닉네임은 숫자 또는 영문 대소문자로 구성되어 있다.
새로운 사람이 입장한 이후 처음 채팅을 입력하는 사람은 반드시 곰곰티콘으로 인사를 한다. 그 외의 기록은 곰곰티콘을 쓰지 않은 평범한 채팅 기록이다.
채팅 기록 중 곰곰티콘이 사용된 횟수를 구해보자!
입력
첫 번째 줄에는 채팅방의 기록 수를 나타내는 정수 이 주어진다. (1≤N≤100000)
두 번째 줄부터 개의 줄에 걸쳐 새로운 사람의 입장을 나타내는 ENTER, 혹은 채팅을 입력한 유저의 닉네임이 문자열로 주어진다. (문자열길이1≤문자열 길이≤20)
첫 번째 주어지는 문자열은 무조건 ENTER이다.
출력
채팅 기록 중 곰곰티콘이 사용된 횟수를 출력하시오.
예제 입력 1 복사
9
ENTER
pjshwa
chansol
chogahui05
lms0806
pichulia
r4pidstart
swoon
tony9402
예제 출력 1 복사
8
문제풀이(1)
ENTER : 새로운 사람이 채팅방에 입장했음.
그 외 : 채팅을 입력한 유저의 닉네임
ENTER로 새로운 사람이 채팅방에 입장했다는 커맨드 다음으로 나온 닉네임의 개수를 구한다.
ENTER는 여러번 나올수 있고, 한 번의 ENTER에는 중복된 닉네임이 없어야하며 다른 ENTER에는 이전 ENTER와 중복된 닉네임이 있을 수 있다.
set을 이용해서 중복제거를 하고 ENTER가 나올때마다 set을 초기화 해주면 된다.
const filePath = process.platform === "linux" ? "/dev/stdin" : "./input.txt";
const input = require("fs").readFileSync(filePath).toString().trim().split("\n");
const N = Number(input.shift());
const set = new Set();
let answer = 0;
for (let i = 0; i < N; i++) {
if (input[i] === "ENTER") {
answer += set.size;
set.clear();
continue;
}
set.add(input[i]);
if (i === N - 1) {
answer += set.size;
}
}
console.log(answer);
'Algorithm' 카테고리의 다른 글
[Baekjoon]2670번 연속부분최대곱 - Javascript (0) | 2024.01.03 |
---|---|
[Baekjoon]9507번 Generations of Tribbles - Javascript (0) | 2024.01.02 |
[Baekjoon]4134번 다음 소수 - Javascript (1) | 2024.01.01 |
[Baekjoon]1969번 DNA - Javascript (1) | 2024.01.01 |
[Baekjoon]28278번 스택 2 - Javascript (0) | 2023.12.29 |