728x90
문제 설명
https://www.acmicpc.net/problem/13414
문제 풀이 방법
이번 문제는 중복 처리 알고리즘 문제이다.
원래는 객체 리터럴을 이용해 인덱스를 저장해 풀이를 진행했지만, 케이스가 길어지면 시간 초과 에러가 발생할 수 있다 생각했다.
그래서 Set 객체를 이용해 다시 풀어봤다.
Set은 먼저 나온 요소만 저장하기 때문에 원본 요소의 뒤에 나온 중복 요소를 순서대로 처리할 수 있다.
정답 코드
const input = require('fs')
.readFileSync(process.platform === 'linux' ? '/dev/stdin' : __dirname + '/example.txt')
.toString().trim().split('\n')
const [N, L] = input.shift().split(' ');
let arr = input.map(e => e.trim());
// 두 번째 문제 풀이 방법( Set 자료구조를 이용해 중복된 요소를 정리,
// reverse()메서드를 이용해 뒤에서 부터 중복 처리 후 원래대로
// reverse()를 이용해 정답 도출 )
let set = new Set(arr.reverse())
let answer = [...set].reverse().slice(0, N).join('\n')
console.log(answer)
// 첫 번째 문제 풀이 방법(객체를 이용한 풀이)
// let obj = {};
// arr.forEach((e, i) => {
// obj[e] = i;
// })
// let answer = Object.entries(obj).sort((a, b) => a[1] - b[1]).slice(0, N).map(e => e[0]).join('\n');
// console.log(answer)
728x90
'코딩 테스트 > 백준' 카테고리의 다른 글
[Node.js] 14501_퇴사 (0) | 2024.04.30 |
---|---|
[Node.js] 11054_가장 긴 바이토닉 부분 수열 (2) | 2024.04.28 |
18111번 마인크래프트 (0) | 2024.04.22 |
[Nodejs] 2178번 미로 탐색 (1) | 2023.10.10 |
[Nodejs] 12865번 평범한 배낭 (0) | 2023.09.12 |