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

 

6503번: 망가진 키보드

입력은 여러 개의 테스트 케이스로 이루어져 있고, 각 테스트 케이스는 두 줄로 이루어져 있다. 테스트 케이스의 첫째 줄에는 m이 주어진다. (1 ≤ m ≤ 128) 둘째 줄에는 상근이가 입력하려고 하는

www.acmicpc.net

투 포인터 문제다. 출력 횟수가 많으므로 스위프트의 경우 출력을 한 번에 몰아서 해야 시간초과를 받지 않는다.

 

풀이

문자열 키와 정수형 값을 가지는 딕셔너리를 활용했다. 투포인터를 통해 입력 텍스트를 탐색하면서 딕셔너리의 크기가 n 미만이라면 tail이 가리키는 글자를 추가. n이상이라면 tail이 가리키는 글자가 딕셔너리에 있는 글자인지 확인. 있는 글자라면 해당하는 딕셔너리의 값과 tail 증가. 없는 글자라면 head가 가리키는 글자를 키로 가지는 딕셔너리의 값을 감소시킨다. 이후 head를 증가시킨다.

매 반복문마다 딕셔너리의 크기가 n 이하라면 tail - head의 값으로 최댓값을 갱신한다.

 

정답 코드

'Problem Solving > BOJ' 카테고리의 다른 글

[1263] 시간 관리  (0) 2023.01.29
[2607] 비슷한 단어  (2) 2023.01.27
[15831] 준표의 조약돌  (0) 2023.01.23
[12892] 생일 선물  (0) 2023.01.21
[6137] 문자열 생성  (0) 2023.01.20

+ Recent posts