본문 바로가기

PS/백준

[BOJ] 백준 16139 인간-컴퓨터 상호작용 (Swift)

반응형

문제

https://www.acmicpc.net/problem/16139

 

16139번: 인간-컴퓨터 상호작용

첫 줄에 문자열 $S$가 주어진다. 문자열의 길이는 $200,000$자 이하이며 알파벳 소문자로만 구성되었다. 두 번째 줄에는 질문의 수 $q$가 주어지며, 문제의 수는 $1\leq q\leq 200,000$을 만족한다. 세 번째

www.acmicpc.net

풀이

누적 합을 사용하여 풀이할 수 있습니다.
저는 문자의 갯수가 나오는 누적합을 구하기 위해 Dictionary를 Array로 감싸주었습니다.

"mandos" 라는 문자열이 있다면,
array[0] = ["m": 1]
array[1] = ["m": 1, "a": 1] 과 같은 형태로 만들어 주었습니다.

그 이후 누적 합을 구하는 것 처럼,
l ~ r 까지의 알파벳(a)이 들어오는 횟수를 array[r][a] - array[l - 1][a] 와 같이 구해줬습니다.

소스코드

후기

안풀릴줄 알았는데.. 통과돼서 조금 신기했던 문제였습니다.
다른분들의 풀이를 보니깐 아스키 값으로 푸시는 분도 계셨는데 좋은 방법인 것 같습니다.

반응형