Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- js
- 그리디
- 백준
- BFS
- 컴퓨터과학
- 국비지원
- 패스트캠퍼스
- git
- 자바스크립트
- DFS
- CSS
- 부트캠프
- 호이스팅
- nodejs
- LinkSnap
- 프론트엔드개발자
- 야놀자
- KAKAO
- 코테
- cpu
- html/css/js
- 컴퓨터공학
- CS
- computerscience
- 코딩테스트
- 알고리즘
- 국비지원취업
- github
- 너비우선탐색
- Javascript
Archives
- Today
- Total
My Boundary As Much As I Experienced
나는야 포켓몬 마스터 이다솜(백준 코딩테스트 1620번, 해시조회, NodeJS 풀이) 본문
https://www.acmicpc.net/problem/1620
문제 수준:
실버4
문제 요약:
이다솜씨가 포켓몬 암기 시험 보는데 쉽게 풀기 위해
1. 번호가 나오면 해당 번호 포켓몬 이름 대기
2. 이름이 나오면 해당 이름 포켓몬 번호 대기
를 하는 프로그램을 만들어줘라.
(문제의 3분의2는 헛소리이고 결국 하라는건 이거였다ㅋㅋ..)
입출력 예 (입력 / 출력):
첫째줄엔 도감 등록 포켓몬 갯수 N와 시험 문제 갯수 M가 나오고
두번째 줄부터 N+1번째 줄까진 도감 등록 포켓몬 이름들이 나오고,
나머지 줄들은 문제가 나온다.
도감에 등록된 순서가 포켓몬의 번호이다.
문제 풀이 전략:
같은 날 푼 요세푸스 문제와 같은 레벨 문제가 맞나? 싶을 정도로 쉽게 풀었다.
1. 포켓몬 번호가 주어지면 배열의 인덱스에 접근해서 푼다.
2. 포켓몬 이름이 주어지면 객체의 대괄호 표기법으로 접근해서 문제를 푼다.
이 두 로직이면 된다.
배열은 입력값을 slicing해서 쉽게 얻을 수 있었고,
객체는 for문을 돌면서 'const arr['Pikachu'] = 25' 이런 식으로 딱 한 번만 저장했다. (O(n))
딱 한 번 객체로 저장하는 순회만 하면, 조회하는데엔 O(1)을 보장한다.
만약 초보자스럽게 이름과 indexOf의 조합으로 포켓몬의 번호를 알아내려 했다면,
조회할때마다 O(n)의 시간복잡도를 체험해야만 한다. (시간 초과 난다.)
내 풀이:
let fs = require("fs");
let input = fs.readFileSync("input.txt").toString().trim().split("\n");
let [totalNum, questNum] = input[0].split(" ").map(Number);
const dogamArr = input.slice(1, totalNum + 1); // 도감 배열 만들기
const dogamObj = {};
for (let i = 0; i < dogamArr.length; i++) {
dogamObj[dogamArr[i]] = i + 1; //도감 객체 만들기
}
const questions = input.splice(totalNum + 1); // 문제 slicing
questions.forEach((el) => { // 문제 푸는 로직
if (Number(el)) {
console.log(dogamArr[+el - 1]);
} else {
console.log(dogamObj[el]);
}
});
'Algorithm > Coding Test' 카테고리의 다른 글
백준 골드5 달성 (0) | 2023.10.22 |
---|---|
숨바꼭질(백준 코딩테스트 1697번, BFS, NodeJS 풀이) (0) | 2023.09.03 |
요세푸스 문제(백준 코딩테스트 1158번, Queue, NodeJS 풀이) (0) | 2023.09.02 |
강아지는 많을수록 좋다.(백준 코딩테스트 27971번, BFS, NodeJS 풀이) (0) | 2023.08.31 |
고양이는 많을수록 좋다.(백준 코딩테스트 27961번, 그리디, NodeJS 풀이) (0) | 2023.08.31 |