알고리즘/기타
[Cos pro 1급] 6차 문제1) 꽃피는 봄이 언제 오나요 (java)
흰싸라기
2022. 8. 25. 16:25
https://edu.goorm.io/lecture/17301/cos-pro-1급-기출문제-java
COS PRO 1급 기출문제 - Java - 구름EDU
YBMIT에서 시행하는 COS Pro 자격증으로 기출문제를 직접 풀어볼 수 있는 실습 위주의 강좌입니다.
edu.goorm.io
[문제]
[문제풀이 전]
핀 꽃을 저장하고 저장한 값을 통해 다음 필 꽃을 저장해 반복하는 로직을 생각했다.
[문제풀이]
import java.util.*;
class Main {
public int solution(int n, int[][] garden) { // 0 피지 않은 꽃 1 핀 꽃
int answer = 0;
int[] dx = {1, 0, -1, 0};
int[] dy = {0, 1, 0, -1};
ArrayList<Integer> bloom = new ArrayList<>();
for(int i=0;i<n;i++){ // 핀 꽃 위치 저장
for(int j=0;j<n;j++){
if(garden[i][j]==1)
bloom.add(i*10+j);
}
}
while(!bloom.isEmpty()){
int bn = bloom.size();
for(int i=0;i<bn;i++){
int x = bloom.get(0)/10;
int y = bloom.get(0)%10;
bloom.remove(0);
for(int k=0;k<4;k++){
int nx = x+dx[k]; int ny = y+dy[k];
if(nx>=0&&nx<n&&ny>=0&&ny<n){
if(garden[nx][ny]==0){
bloom.add(nx*10+ny);
garden[nx][ny]=1;
}
}
}
}
answer++;
}
return --answer; // 마지막 모두 1일때 -1
}
ArrayList<Integer> bloom |
|
while(!bloom.isEmpty()){} |
|
int answer | 마지막에 다 1일때도 한번 반복문을 돌기 때문에 출력하기전에 -1 |