on
[백준] 2667번:단지번호붙이기(Java 자바)
[백준] 2667번:단지번호붙이기(Java 자바)
728x90
문제
https://www.acmicpc.net/problem/2667
풀이 및 소스코드
bfs로 풀어주었다.
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.*; public class Main { public static void main(String[] args) throws NumberFormatException, IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st; StringBuilder sb = new StringBuilder(); int n = Integer.parseInt(br.readLine()); char[][] map = new char[n][n]; for(int i=0;i homesCnt = new PriorityQueue<>(); // homesCnt : 단지 내 집의 수를 저장 후 오름차순으로 출력하기 위함. for(int i=0;i q = new LinkedList(); q.add(new node(i, j)); map[i][j] = '0'; // 방문처리 while(!q.isEmpty()) { node now = q.poll(); for(int k=0;k<4;k++) { int nowx = now.x+dx[k], nowy = now.y+dy[k]; if(0>nowx||0>nowy||n<=nowx||n<=nowy) continue; if(map[nowx][nowy] == '0') continue; q.add(new node(nowx, nowy)); map[nowx][nowy] = '0'; homeCnt++; } } homesCnt.add(homeCnt); } } sb.append(danjiCnt).append("
"); while(!homesCnt.isEmpty()) { sb.append(homesCnt.poll()).append("
"); } System.out.println(sb); } } class node{ int x, y; public node(int x, int y) { super(); this.x = x; this.y = y; } }
300x250
from http://jainn.tistory.com/354 by ccl(A) rewrite - 2021-12-19 01:27:35