-
[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 - 핀 꽃 위치를 x*10+y로 저장
- class로 Pair 만들어 사용해도 좋지만, 한번 사용하고 코테보는 것처럼시간 체크해서 빨리 하기위해 위 방법 사용
while(!bloom.isEmpty()){} - 이전에 저장한 핀 꽃 위치를 하나씩 탐색
- 저장한 위치에 따라 정원 상태 확인 후 변화가 있는 경우 위치 저장
int answer 마지막에 다 1일때도 한번 반복문을 돌기 때문에 출력하기전에 -1 '알고리즘 > 기타' 카테고리의 다른 글
[구름Level] 최대 자리곱 (0) 2022.11.01 [Cos pro 1급] 6차 문제3) 큰수와 작은수의 차이(java) (0) 2022.08.25 [Cos pro 1급] 6차 문제2) 단어를 순서대로 적으세요 (java) (0) 2022.08.25