※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※
이번에 볼 문제는 백준 13022번 문제인 늑대와 올바른 단어이다.
문제는 아래 링크를 확인하자.
https://www.acmicpc.net/problem/13022
13022번: 늑대와 올바른 단어
첫째 줄에 단어가 주어진다. 단어는 w, o, l, f로만 이루어져 있으며, 길이는 50을 넘지 않는다.
www.acmicpc.net
문자열을 앞에서부터 읽으며 다음을 반복하는 것으로 문제를 해결할 수 있다.
1) 현재 읽고 있는 인덱스부터 'w'가 몇개 연속으로 나오는지를 세자. 만약 w가 존재하지 않는다면 '0'을 출력하고 프로그램을 종료한다.
2) 1에서 구한 개수만큼 앞으로 'o', 'l', 'f'가 연속하게 나오는지를 확인한다. 만약 그렇지 않다면 '0'을 출력하고 프로그램을 종료한다.
3) 아직 문자열 전체를 읽지 않았다면 1으로 돌아간다.
4) '1'을 출력한다.
아래는 제출한 소스코드이다.
#include <iostream>
#include <string>
using namespace std;
string s; int slen;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cin >> s; slen = s.length();
for (int idx = 0; idx < slen;) {
int cnt = 0;
while (idx < slen && s[idx] == 'w') idx++, cnt++;
if (cnt == 0) {
cout << 0;
return 0;
}
for (int c = 0; c < cnt; c++) {
if (idx == slen || s[idx] != 'o') {
cout << 0;
return 0;
}
idx++;
}
for (int c = 0; c < cnt; c++) {
if (idx == slen || s[idx] != 'l') {
cout << 0;
return 0;
}
idx++;
}
for (int c = 0; c < cnt; c++) {
if (idx == slen || s[idx] != 'f') {
cout << 0;
return 0;
}
idx++;
}
}
cout << 1;
}
728x90
'BOJ' 카테고리의 다른 글
[BOJ 3205 // C++] fusnote (0) | 2023.06.20 |
---|---|
[BOJ 3108 // C++] 로고 (1) | 2023.06.19 |
[BOJ 2878 // C++] 캔디캔디 (0) | 2023.06.17 |
[BOJ 5254 // C++] Balls (0) | 2023.06.16 |
[BOJ 10067 // C++] 수열 나누기 (0) | 2023.06.15 |