fragment-header
fragment-markdown
홈
로그인
로그아웃
내 블로그
설정
로그인
백준 23797 (C++) 개구리
최초 업로드: 2025-11-16 13:19:04
최근 수정 시간: 2025-11-16 13:19:04
게시자: rlatjwls3333
카테고리: 백준
조회수: 5
# [Silver I] 개구리 [문제 링크](https://www.acmicpc.net/problem/23797) ## 문제 설명 <p data-pm-slice="1 1 []">개구리의 울음소리는 <code>K</code>와 <code>P</code>가 번갈아서 나온다. 예를 들어, <code>KPKP...</code> 또는 <code>PKPKPKPK...</code> 는 개구리의 울음소리지만, <code>KKPP</code>는 아니다. 여러 개구리가 같이 울고있다. 다만, 개구리들이 우는 타이밍은 제멋대로라서 울음소리의 간격이 일정하지 않을 수 있다. <code>K</code>와 <code>P</code>로 이루어진 문자열 \(S\)가 주어질 때, \(S\)에는 최소 몇 마리의 개구리가 울고있을까?</p> ## 입력 <p data-pm-slice="1 1 []">첫째 줄에 \(S\)가 주어진다. \(1≤|S|≤10^6\)</p> ## 출력 <p data-pm-slice="1 1 []">가능한 개구리의 최소 마릿수를 출력한다.</p> ## 풀이 개구리가 P를 외치다 쉬고, K를 외치다 쉬고 할 수 있습니다. 각각 P를 마지막으로 외친 개구리, K를 마지막으로 외친 개구리의 수를 각각 기록하며 풀었습니다. ``` c++ #include<bits/stdc++.h> using namespace std; int main() { ios::sync_with_stdio(0); cin.tie(0); string s; cin >> s; int k=0, p=0; for(char ch:s) { if(ch=='K') { if(p) p--; k++; } else { if(k) k--; p++; } } cout << k+p; } ```