하루하루 꾸준히, 인생은 되는대로

알고리즘

알고리즘 스터디 10주차

긤효중 2022. 5. 23. 21:44

https://www.acmicpc.net/problem/8958

 

8958번: OX퀴즈

"OOXXOXXOOO"와 같은 OX퀴즈의 결과가 있다. O는 문제를 맞은 것이고, X는 문제를 틀린 것이다. 문제를 맞은 경우 그 문제의 점수는 그 문제까지 연속된 O의 개수가 된다. 예를 들어, 10번 문제의 점수

www.acmicpc.net

#include <iostream>
#include <string>
using namespace std;
int main(void){
    int t;
    cin >> t;
    while(t--){
        string str;
        cin >> str;
        int count = 0;
        int sum = 0;
        for(int i = 0;i<str.size();i++){
            if(str[i] == 'X'){
                count = 0;
            }
            else{
                count++;
                sum = sum + count;
 
            }
        }
        cout << sum << '\n';
    }
}

https://www.acmicpc.net/problem/1987

 

1987번: 알파벳

세로 R칸, 가로 C칸으로 된 표 모양의 보드가 있다. 보드의 각 칸에는 대문자 알파벳이 하나씩 적혀 있고, 좌측 상단 칸 (1행 1열) 에는 말이 놓여 있다. 말은 상하좌우로 인접한 네 칸 중의 한 칸으

www.acmicpc.net

#include <iostream>
using namespace std;
 
int max(int a,int b){
    if(a>b){
        return a;
    }
    else{
        return b;
    }
}
bool visited[27];
char arr[21][21];
int cnt;
int ans = 0;
int dx[4] = {0,0,-1,1};
int dy[4] = {1,-1,0,0};
int r,c;
 
void dfs(int x,int y,int depth){
    cnt = max(depth,cnt);
 
    for(int i = 0;i<4;i++){
        int nx = x + dx[i];
        int ny = y + dy[i];
        if((nx>=0 && nx<r) && (ny>=0 && ny<c)){
           if(visited[arr[nx][ny] - 'A'] == false){
               visited[arr[nx][ny] - 'A'] = true;
               dfs(nx,ny,depth+1);
               visited[arr[nx][ny] - 'A'] = false;
           }
        }
    }
}
int main(void){
    cin >> r >> c;
    for(int i = 0;i<r;i++){
        for(int j = 0;j<c;j++){
            cin >> arr[i][j];
        }
    }
 
    char c = arr[0][0];
    visited[c-'A'] = true;
    dfs(0,0,1);
 
    cout << cnt;
}

'알고리즘' 카테고리의 다른 글

백준 2502 떡 먹는 호랑이 C++  (0) 2022.05.25
백준 11508 C++  (0) 2022.05.25
백준 9324 진짜 메시지 C++  (0) 2022.05.18
2022-05-18 알고리즘 문제(백준 2096 내려가기)  (0) 2022.05.18
2022-05-17 알고리즘 문제  (0) 2022.05.17