fragment-header
fragment-markdown
홈
로그인
로그아웃
내 블로그
설정
로그인
백준 13022 (C++) 늑대와 올바른 단어
최초 업로드: 2025-09-14 11:43:08
최근 수정 시간: 2025-09-14 11:43:08
게시자: rlatjwls3333
카테고리: 백준
조회수: 4
# [Silver II] 늑대와 올바른 단어 [문제 링크](https://www.acmicpc.net/problem/13022) ## 문제 설명 <p>다음은 늑대 나라에서 사용하는 올바른 단어에 대한 설명이다.</p> <ol> <li>임의의 양의 정수 n에 대해서, 'w'가 n번 나오고, 그 다음에 'o'가 n번, 그 다음에 'l'이 n번, 그 다음에 'f'가 n번 나온 단어는 올바른 단어이다.</li> <li>올바른 단어 두 개를 이은 단어도 올바른 단어이다.</li> <li>1번과 2번 조건으로 만들 수 있는 단어만 올바른 단어이다.</li> </ol> <p>다음은 올바른 단어의 예시이다.</p> <ul> <li>1번 규칙으로 만든 "wolf", "wwoollff", "wwwooolllfff"는 모두 올바른 단어이다.</li> <li>2번 규칙으로 만든 "wolfwwoollff"은 올바른 단어이다.</li> <li>2번 규칙을 두 번 써서 만든 "wolfwwoollffwolf"은 올바른 단어이다.</li> <li>"wfol"은 올바른 단어가 아니다. (순서가 올바르지 않음)</li> <li>"wwolfolf"는 올바른 단어가 아니다. (문자열의 중간에 다른 문자열을 집어 넣음)</li> <li>"wwwoolllfff"는 올바른 단어가 아니다. (o가 2번 들어갔다)</li> </ul> ## 입력 <p>첫째 줄에 단어가 주어진다. 단어는 w, o, l, f로만 이루어져 있으며, 길이는 50을 넘지 않는다.</p> ## 출력 <p>입력으로 주어진 단어가 올바른 단어인 경우에는 1을, 아니면 0을 출력한다.</p> ## 풀이 각각의 연속된 w를 기준으로 같은 수의 o, l, f가 있는지 확인해 주었습니다. ``` c++ #include<bits/stdc++.h> using namespace std; string s; bool chk() { int curW=0, cnt=0; for(int i=0;i<s.length();) { if(s[i]=='w') { curW++; i++; } else { if(curW==0 || s.length()<i+3*curW) return 0; for(int j=i;j<i+curW;j++) if(s[j]!='o') return 0; for(int j=i+curW;j<i+2*curW;j++) if(s[j]!='l') return 0; for(int j=i+2*curW;j<i+3*curW;j++) if(s[j]!='f') return 0; i += 3*curW; curW=0; } } return curW==0; } int main() { ios::sync_with_stdio(0); cin.tie(0); cin >> s; cout << chk(); } ```