100자 이내의 '1', '0', '.' 으로 구성된 문자열을 입력받고 문자열 내부에 '1'이 연속으로 5개 나오면 "1 win"를 출력하고 '0'이 연속으로 5개 나오면 "0 win"를 출력하라. 또한 승리자가 없을 때는 "no win"을 출력한다. 무승부는 없다.
승리를 판정하는 방법은 간단하다. 특히 <string>에서 제공하는 find()함수를 쓰면 말이다.
find 함수 : http://khgkjg12.blogspot.kr/2016/07/string-stringfindc.html
그러나 find를 사용 안하더라도 간단히 판정할 수 있다.
1. c=0;
2. i번째 배열과 i-1번째 배열이 같은지 확인한다.
2-1. 2이 참이면, c++;
2-2. 2이 거짓이면 c=0;
3.c=5인지 확인한다.
3-1. 3가 참이면, i번째 배열이 '.'인지 확인한다.
3-1-1. 3-1이 참이면, c=0;
3-1-2. 3-1이 거짓이면, i번째 배열의 원소을 얻어내 해당 숫자가 승리하였다고 출력한다. 그리고 순환문을 빠져나온다.
6. 2~3을 i가 1일때부터 문자열의 끝까지 반복한다.
7. i가 문자열의 길이와 같은지 확인한다.
7-1. 7이 참이면, "no win"을 출력한다.
#include <iostream>
#include <windows.h>
#include <string>
using namespace std;
int main(){
string str;
int i,c=0;
cin >> str;
for(i=1;i<str.length();i++){
if(str[i]==str[i-1])c++;
else c=0;
if(c==4){
if(str[i]=='.')c=0;
else {
cout<<str[i]<<" win"<<endl;
break;
}
}
}
if(i==str.length())cout<<"no win"<<endl;
system("PAUSE");
return 0;
}
실행결과
1001111..1010.1.10001...1.....001110..111.00001001.11100000110111.
0 win
Press any key to continue . . .
승리를 판정하는 방법은 간단하다. 특히 <string>에서 제공하는 find()함수를 쓰면 말이다.
find 함수 : http://khgkjg12.blogspot.kr/2016/07/string-stringfindc.html
그러나 find를 사용 안하더라도 간단히 판정할 수 있다.
1. c=0;
2. i번째 배열과 i-1번째 배열이 같은지 확인한다.
2-1. 2이 참이면, c++;
2-2. 2이 거짓이면 c=0;
3.c=5인지 확인한다.
3-1. 3가 참이면, i번째 배열이 '.'인지 확인한다.
3-1-1. 3-1이 참이면, c=0;
3-1-2. 3-1이 거짓이면, i번째 배열의 원소을 얻어내 해당 숫자가 승리하였다고 출력한다. 그리고 순환문을 빠져나온다.
6. 2~3을 i가 1일때부터 문자열의 끝까지 반복한다.
7. i가 문자열의 길이와 같은지 확인한다.
7-1. 7이 참이면, "no win"을 출력한다.
#include <iostream>
#include <windows.h>
#include <string>
using namespace std;
int main(){
string str;
int i,c=0;
cin >> str;
for(i=1;i<str.length();i++){
if(str[i]==str[i-1])c++;
else c=0;
if(c==4){
if(str[i]=='.')c=0;
else {
cout<<str[i]<<" win"<<endl;
break;
}
}
}
if(i==str.length())cout<<"no win"<<endl;
system("PAUSE");
return 0;
}
실행결과
1001111..1010.1.10001...1.....001110..111.00001001.11100000110111.
0 win
Press any key to continue . . .
댓글
댓글 쓰기