개발자 톡

연습문제 톡 [21년 재직자 대회 예선] 이미지 프로세싱

이거 대체 무슨차인가요? (스포)

등록일
2024-11-01 00:16:37
조회수
2
작성자
junho0956

방문흔적을 안남긴게 아닌데

큐에 넣을때 방문처리하는게 어떤 예시에서 시간초과를 발생시키는건지 궁금합니다.


// 1. 큐에서 꺼냈을 때 방문처리
static void query(int y, int x, int c) {
    Deque<int[]> q = new ArrayDeque<>();
    q.add(new int[]{y,x});
    int color = map[y][x];


    while(!q.isEmpty()) {
        int[] cur = q.pop();
        int cy = cur[0], cx = cur[1];
        if (map[cy][cx] == c) continue;
        map[cy][cx] = c;


        for (int k=0; k<4; k++) {
            int yy=cy+ay[k], xx=cx+ax[k];
            if (yy<1||xx<1||yy>n||xx>m||map[yy][xx]!=color) continue;
            q.add(new int[]{yy, xx});
        }
    }
}


// 2. 큐에 넣을때 방문처리
static void query(int y, int x, int c) {
    Deque<int[]> q = new ArrayDeque<>();
    q.add(new int[]{y,x});
    int color = map[y][x];
    map[y][x] = c;
    int cnt = 0;
    while(!q.isEmpty()) {
        int[] cur = q.pop();
        int cy = cur[0], cx = cur[1];
        for (int k=0; k<4; k++) {
            int yy=cy+ay[k], xx=cx+ax[k];
            if (yy<1||xx<1||yy>n||xx>m||map[yy][xx]!=color) continue;
            map[yy][xx] = c;
            q.add(new int[]{yy, xx});
        }
    }
}
#[21년_재직자_대회_예선]_이미지_프로세싱

이 카테고리의 톡 더보기