-
[백준 16139] 인간-컴퓨터 상호작용 - 누적합, javascript,node.js알고리즘/코딩 테스트 2023. 2. 13. 13:42반응형
문제:
https://www.acmicpc.net/problem/16139
16139번: 인간-컴퓨터 상호작용
첫 줄에 문자열 $S$가 주어진다. 문자열의 길이는 $200,000$자 이하이며 알파벳 소문자로만 구성되었다. 두 번째 줄에는 질문의 수 $q$가 주어지며, 문제의 수는 $1\leq q\leq 200,000$을 만족한다. 세 번째
www.acmicpc.net
알고리즘 :
1. 특정 알파벳 마다 누적합의 개수를 저장하기 위해 map을 이용한다.
- map을 사용하지 않고 일일이 누적합을 구할 시 50점을 받게 된다.
2. 누적합의 개수를 구할 때는 map.get을 이용한다.
전체코드
const filePath = require('path').join(__dirname, '/test.txt'); const input = require('fs').readFileSync(filePath).toString().trim().split('\n'); // const input = require('fs').readFileSync('/dev/stdin').toString().trim().split('\n') const [ str ,count] = [input[0],input.length-2] const map = new Map() const answer = [] for(let i=0;i<count;i++){ const [cur] = input[2+i].split(' ') const [s,e] = input[2+i].split(' ').slice(1).map(Number) if (!map.has(cur)) { let psum = new Array(str.length+1).fill(0) for(let j=0;j<str.length;j++){ let sum = str[j]===cur?1:0 psum[j+1] = psum[j] + sum } map.set(cur,psum) } answer.push(map.get(cur)[e+1]-map.get(cur)[s]) } console.log(answer.join('\n'))
반응형'알고리즘 > 코딩 테스트' 카테고리의 다른 글
[백준 2444] 별 찍기 7 - node.js, javascript, 2442,2443 (0) 2023.02.14 [백준 10986] 나머지 합 - javascript,node.js,구간합,누적합 (0) 2023.02.13 [백준] node.js 즉 javascript로 풀기위한 세팅 (0) 2023.02.13 [코딩테스트] 프로그래머스 javascript 2단계 - 영어 끝말잇기 (0) 2023.02.10 [코딩테스트] 프로그래머스 javascript 2단계 - 2개 이하로 다른 비트 (0) 2023.02.09