https://www.acmicpc.net/problem/8958
8958๋ฒ: OXํด์ฆ
"OOXXOXXOOO"์ ๊ฐ์ OXํด์ฆ์ ๊ฒฐ๊ณผ๊ฐ ์๋ค. O๋ ๋ฌธ์ ๋ฅผ ๋ง์ ๊ฒ์ด๊ณ , X๋ ๋ฌธ์ ๋ฅผ ํ๋ฆฐ ๊ฒ์ด๋ค. ๋ฌธ์ ๋ฅผ ๋ง์ ๊ฒฝ์ฐ ๊ทธ ๋ฌธ์ ์ ์ ์๋ ๊ทธ ๋ฌธ์ ๊น์ง ์ฐ์๋ O์ ๊ฐ์๊ฐ ๋๋ค. ์๋ฅผ ๋ค์ด, 10๋ฒ ๋ฌธ์ ์ ์ ์
www.acmicpc.net
๋ฌธ์
"OOXXOXXOOO"์ ๊ฐ์ OXํด์ฆ์ ๊ฒฐ๊ณผ๊ฐ ์๋ค. O๋ ๋ฌธ์ ๋ฅผ ๋ง์ ๊ฒ์ด๊ณ , X๋ ๋ฌธ์ ๋ฅผ ํ๋ฆฐ ๊ฒ์ด๋ค. ๋ฌธ์ ๋ฅผ ๋ง์ ๊ฒฝ์ฐ ๊ทธ ๋ฌธ์ ์ ์ ์๋ ๊ทธ ๋ฌธ์ ๊น์ง ์ฐ์๋ O์ ๊ฐ์๊ฐ ๋๋ค. ์๋ฅผ ๋ค์ด, 10๋ฒ ๋ฌธ์ ์ ์ ์๋ 3์ด ๋๋ค.
"OOXXOXXOOO"์ ์ ์๋ 1+2+0+0+1+0+0+1+2+3 = 10์ ์ด๋ค.
OXํด์ฆ์ ๊ฒฐ๊ณผ๊ฐ ์ฃผ์ด์ก์ ๋, ์ ์๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ํ ์คํธ ์ผ์ด์ค์ ๊ฐ์๊ฐ ์ฃผ์ด์ง๋ค. ๊ฐ ํ ์คํธ ์ผ์ด์ค๋ ํ ์ค๋ก ์ด๋ฃจ์ด์ ธ ์๊ณ , ๊ธธ์ด๊ฐ 0๋ณด๋ค ํฌ๊ณ 80๋ณด๋ค ์์ ๋ฌธ์์ด์ด ์ฃผ์ด์ง๋ค. ๋ฌธ์์ด์ O์ X๋ง์ผ๋ก ์ด๋ฃจ์ด์ ธ ์๋ค.
์ถ๋ ฅ
๊ฐ ํ ์คํธ ์ผ์ด์ค๋ง๋ค ์ ์๋ฅผ ์ถ๋ ฅํ๋ค.
๋ฌธ์ ํ์ด
- ์ ๋ ฅ๋ฐ์ ์ซ์๋งํผ ๋ฌธ์์ด์ ๋ฐ๋๋ค
- ์ด์ค for๋ฌธ์ ๋๋ฉด์ "O"์ด๋ฉด correct์ซ์๋ฅผ 1์ฉ ์ฆ๊ฐํ๋ค
- ์ด๋,"O"์ด ์๋๋ฉด correct=0์ด ๋๋ฏ๋ก ์ฐ์๋ ์ซ์๊ฐ ๋๊ธด๋ค. ํ์ "O"์ด ๋์๋ 1๋ถํฐ ์์ํ๋ค.
- ์ด๋, "O" ์ด ์๋๋ผ 'O'์ผ๋ก ํด์ผ ํ๋ค.
warning: comparison between pointer and integer
('int' and 'char *')
- ์์ ๋ฐ์ดํ๋ ํ๋ฌธ์๋ฅผ ๊ตฌ๋ถํ๊ณ , ํฐ ๋ฐ์ดํ๋ ๋ฌธ์์ด์ ๊ตฌ๋ถํ๋ค.
- arr[i][j] == "O" ์ผ๋ก ํ๋ฉด ""์ด๋ผ๋ warning์ด ๋ฌ๋ค.
- ์ฆ, arr[i][j] (int)์ ๋ฌธ์์ด์ ๋น๊ตํ๋ ค๊ณ ํ์๊ธฐ ๋๋ฌธ์ ๊ฒฝ๊ณ ๊ฐ ๋๋ค.
C code
#include <string.h>
#include <stdio.h>
int main()
{
int numbers=0;
scanf("%d",&numbers);
char arr[numbers][80];
int correct =0;
int sum =0;
for(int i=0; i<numbers; i++){
scanf("%s",arr[i]);
}
for (int i=0; i<numbers; i++){
for(int j=0; j<strlen(arr[i]); j++){
if( arr[i][j]== 'O'){
correct++;
}
else{
correct = 0;
}
sum += correct;
}
printf("%d\n",sum);
correct =0;
sum =0;
}
return 0;
}