관리 메뉴

cococo-coding

8958번. OX퀴즈 본문

[BOJ] 코드 모음/C_baekJoon

8958번. OX퀴즈

_dani 2023. 11. 22. 14:15
include <stdio.h>
#include <string.h>
int main(){
    //1. 테스트케이스의 개수를 입력받는다.
    //2. 각 테스트케이스들을 입력받는다.
    //3. 각 테이스케이스마다 점수를 구한다.
    //4. 각 테이스케이스의 점수를 출력한다.

    //1
    int hang;
    char arr[80];
    scanf("%d", &hang);

    //2
    for(int i=0; i<hang; i++){
        int sum=0;
        int score=1;
        scanf("%s", &arr);        
        //3
        for(int j=0; j<strlen(arr); j++){
            if(arr[j]=='O') sum=sum+score++;
            else score=1;
        }
        //4
        printf("%d\n", sum);
    }
    return 0;
}

2번에 sum과 score을 저 for문안에 넣어줘야 새로운 테스트케이스가 입력될 때마다 

sum과 score이 초기화되어 새 상태로 쓸 수 있다. 

 

만약 아래와 같이 sum과 score가 for문 밖에 나와있다면

처음 테스트케이스의 sum과 score가 나오고, 두 번째 테스트케이스가 첫번째 테스트케이스의 sum과 score에서 시작하게 된다. 즉 뒤로 갈수록 sum과 score가 누적되어 점점 큰 값들이 나오니 주의할 것

 //2
 int sum=0;

 int score=1;

for(int i=0; i<hang; i++){
       scanf("%s", &arr);

그리고 항상 느끼는 것이지만 예제입력과 출력이 아래처럼 한 파트씩 나눠서 나와있다고해서 

입력을 모조리 끝내고 -> 출력을 해야한다는 생각에 갇혀있지 말자

 

실제 백준의 예시

입력)

5
OOXXOXXOOO
OOXXOOXXOO
OXOXOXOXOXOXOX
OOOOOOOOOO
OOOOXOOOOXOOOOX

 

출력)

10
9
7
55
30

 

실제로 vscode에서 돌린 경우

아래와 같은 입출력이 나온다.

5
OOXXOXXOOO
10
OOXXOOXXOO
9
OXOXOXOXOXOXOX
7
OOOOOOOOOO
55
OOOOXOOOOXOOOOX
느낀 점

처음에는 2차원배열을 생성해서 동적할당을 통해 해결하려고 했지만, 구글링을 해서 다른 분들의 코드를 보니 테스트케이스 개수만 입력받고 1차원배열을 반복하여 풀면 더 간단하더라..^^ 

2023.11.22

'[BOJ] 코드 모음 > C_baekJoon' 카테고리의 다른 글

1157번. 단어 공부  (2) 2023.11.23
2920번. 음계  (1) 2023.11.22
2475번. 검증수  (0) 2023.11.21
25083번. 새싹  (0) 2023.11.21
2440번. 별찍기-3  (0) 2023.11.21