๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ’œ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ/๐Ÿ’œ ๋ฐฑ์ค€

[๋ฐฑ์ค€] C 12์ผ์ฐจ (OXํ€ด์ฆˆ #8958๋ฒˆ)

by eyes from es 2022. 12. 14.
728x90
๋ฐ˜์‘ํ˜•

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๋งŒ์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค.

 

์ถœ๋ ฅ

๊ฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋งˆ๋‹ค ์ ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

 

๋ฌธ์ œํ’€์ด

  1. ์ž…๋ ฅ๋ฐ›์€ ์ˆซ์ž๋งŒํผ ๋ฌธ์ž์—ด์„ ๋ฐ›๋Š”๋‹ค
  2. ์ด์ค‘ for๋ฌธ์„ ๋Œ๋ฉด์„œ "O"์ด๋ฉด correct์ˆซ์ž๋ฅผ 1์”ฉ ์ฆ๊ฐ€ํ•œ๋‹ค
    1. ์ด๋•Œ,"O"์ด ์•„๋‹ˆ๋ฉด correct=0์ด ๋˜๋ฏ€๋กœ ์—ฐ์†๋œ ์ˆซ์ž๊ฐ€ ๋Š๊ธด๋‹ค. ํ›„์— "O"์ด ๋‚˜์™€๋„ 1๋ถ€ํ„ฐ ์‹œ์ž‘ํ•œ๋‹ค.
  3. ์ด๋•Œ, "O" ์ด ์•„๋‹ˆ๋ผ 'O'์œผ๋กœ ํ•ด์•ผ ํ•œ๋‹ค.
warning: comparison between pointer and integer
      ('int' and 'char *')
  1. ์ž‘์€ ๋”ฐ์˜ดํ‘œ๋Š” ํ•œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„ํ•˜๊ณ , ํฐ  ๋”ฐ์˜ดํ‘œ๋Š” ๋ฌธ์ž์—ด์„ ๊ตฌ๋ถ„ํ•œ๋‹ค.
    1. arr[i][j] == "O" ์œผ๋กœ ํ•˜๋ฉด ""์ด๋ผ๋Š” warning์ด ๋œฌ๋‹ค.
    2. ์ฆ‰, 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;
}

 

๊ฒฐ๊ณผ

728x90
๋ฐ˜์‘ํ˜•