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

자료구조

2022-05-15 알고리즘 문제

긤효중 2022. 5. 15. 20:10

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

 

10026번: 적록색약

적록색약은 빨간색과 초록색의 차이를 거의 느끼지 못한다. 따라서, 적록색약인 사람이 보는 그림은 아닌 사람이 보는 그림과는 좀 다를 수 있다. 크기가 N×N인 그리드의 각 칸에 R(빨강), G(초록)

www.acmicpc.net

DFS돌고 R을 G로 바꾸고 다시 DFS돌기

#include <iostream>
#define MAX 101
using namespace std;
 
bool visited[MAX][MAX];
char map[MAX][MAX];
int dx[4] = {1,0,-1,0}; //오른쪽 밑 왼쪽 위
int dy[4] = {0,-1,0,1};
 
int n;
 
void change(){
    for(int i = 0;i<n;i++){
        for(int j = 0;j<n;j++){
            if(map[i][j] == 'G'){
                map[i][j] = 'R';
            }
            visited[i][j] = false;
        }
    }
}
 
void dfs(int x,int y){
    if(visited[x][y]){
        return;
    }
    visited[x][y] = true;
    for(int i = 0;i<4;i++){
        int nx = x + dx[i];
        int ny = y + dy[i];
        if(nx<0 || ny<0 || nx>=n || ny>=n){
            continue;
        }
        if(map[nx][ny] == map[x][y] && visited[nx][ny] == false){
            dfs(nx,ny);
        }
    }
}
int main(void){
    cin >> n;
    for(int i = 0;i<n;i++){
        for(int j = 0;j<n;j++){
            cin >> map[i][j];
        }
    }
 
    int cnt0 = 0;
    int cnt1 = 0;
    for(int i = 0;i<n;i++){
        for(int j = 0;j<n;j++){
            if(visited[i][j] == false){
                dfs(i,j);
                cnt0++;
            }
        }
    }
    change();
    for(int i = 0;i<n;i++){
        for(int j = 0;j<n;j++){
            if(visited[i][j] == false){
                dfs(i,j);
                cnt1++;
            }
        }
    }
    cout << cnt0 << ' ' << cnt1;
}

https://programmers.co.kr/learn/courses/30/lessons/12916

 

코딩테스트 연습 - 문자열 내 p와 y의 개수

대문자와 소문자가 섞여있는 문자열 s가 주어집니다. s에 'p'의 개수와 'y'의 개수를 비교해 같으면 True, 다르면 False를 return 하는 solution를 완성하세요. 'p', 'y' 모두 하나도 없는 경우는 항상 True를

programmers.co.kr

function solution(s){
    var answer = true;
    var p = 0;
    var y = 0;
    
    for(var i = 0;i<s.length;i++){
        if(s[i] == 'p' || s[i] == 'P'){
            p++;
        }
        else if(s[i] == 'y' || s[i] == 'Y'){
            y++;
        }
    }
    if(p == y){
        return true;
    }
    else{
        return false;
    }
  
}

'자료구조' 카테고리의 다른 글

백준 23056 참가자 명단 C++  (0) 2022.06.01
백준 수 정렬하기 3  (0) 2022.05.20
백준 12789 도키도키 간식드리미 C++  (0) 2022.05.01
백준 17299 오등큰수 C++  (0) 2022.04.25
백준 14753 C++  (0) 2022.04.21