View
[νλ‘κ·Έλλ¨Έμ€] 2οΈβ£ 무μΈλ μ¬ν(JAVA)
μ± μ½λ κ°μ 2023. 2. 24. 15:34π‘ λ¬Έμ
λ©λ¦¬λ μ¬λ¦μ λ§μ 무μΈλλ‘ μ¬νμ κ°κΈ° μν΄ μ§λλ₯Ό λ³΄κ³ μμ΅λλ€. μ§λμλ λ°λ€μ 무μΈλλ€μ λν μ λ³΄κ° νμλΌ μμ΅λλ€. μ§λλ 1 x 1ν¬κΈ°μ μ¬κ°νλ€λ‘ μ΄λ£¨μ΄μ§ μ§μ¬κ°ν 격μ ννμ΄λ©°, 격μμ κ° μΉΈμλ 'X' λλ 1μμ 9 μ¬μ΄μ μμ°μκ° μ νμμ΅λλ€. μ§λμ 'X'λ λ°λ€λ₯Ό λνλ΄λ©°, μ«μλ 무μΈλλ₯Ό λνλ λλ€. μ΄λ, μ, ν, μ’, μ°λ‘ μ°κ²°λλ λ λ€μ νλμ 무μΈλλ₯Ό μ΄λ£Ήλλ€. μ§λμ κ° μΉΈμ μ ν μ«μλ μλμ λνλ΄λλ°, μ, ν, μ’, μ°λ‘ μ°κ²°λλ μΉΈμ μ ν μ«μλ₯Ό λͺ¨λ ν©ν κ°μ ν΄λΉ 무μΈλμμ μ΅λ λ©°μΉ λμ λ¨Έλ¬Ό μ μλμ§λ₯Ό λνλ λλ€. μ΄λ€ μ¬μΌλ‘ λλ¬ κ°μ§ λͺ» μ ν λ©λ¦¬λ μ°μ κ° μ¬μμ μ΅λ λ©°μΉ μ© λ¨Έλ¬Ό μ μλμ§ μμλ³Έ ν λλ¬κ° μ¬μ κ²°μ νλ € ν©λλ€.
μ§λλ₯Ό λνλ΄λ λ¬Έμμ΄ λ°°μ΄ maps
κ° λ§€κ°λ³μλ‘ μ£Όμ΄μ§ λ, κ° μ¬μμ μ΅λ λ©°μΉ μ© λ¨Έλ¬΄λ₯Ό μ μλμ§ λ°°μ΄μ μ€λ¦μ°¨μμΌλ‘ λ΄μ return νλ solution ν¨μλ₯Ό μμ±ν΄μ£ΌμΈμ. λ§μ½ μ§λΌ μ μλ 무μΈλκ° μλ€λ©΄ -1μ λ°°μ΄μ λ΄μ return ν΄μ£ΌμΈμ.
μ νμ¬ν
- 3 β€
maps
μ κΈΈμ΄ β€ 100- 3 β€
maps[i]
μ κΈΈμ΄ β€ 100 maps[i]
λ 'X' λλ 1 κ³Ό 9 μ¬μ΄μ μμ°μλ‘ μ΄λ£¨μ΄μ§ λ¬Έμμ΄μ λλ€.- μ§λλ μ§μ¬κ°ν ννμ λλ€.
- 3 β€
μ μΆλ ₯ μ
maps | result |
---|---|
["X591X","X1X5X","X231X", "1XXX1"] | [1, 1, 27] |
["XXX","XXX","XXX"] | [-1] |
μ μΆλ ₯ μ μ€λͺ
μ μΆλ ₯ μ #1
μ λ¬Έμμ΄μ λ€μκ³Ό κ°μ μ§λλ₯Ό λνλ λλ€.
μ°κ²°λ λ λ€μ κ°μ ν©μΉλ©΄ λ€μκ³Ό κ°μΌλ©°
μ΄λ₯Ό μ€λ¦μ°¨μμΌλ‘ μ λ ¬νλ©΄ [1, 1, 27]μ΄ λ©λλ€.
μ μΆλ ₯ μ #2
μ λ¬Έμμ΄μ λ€μκ³Ό κ°μ μ§λλ₯Ό λνλ λλ€.
μ¬μ΄ μ‘΄μ¬νμ§ μκΈ° λλ¬Έμ -1μ λ°°μ΄μ λ΄μ λ°νν©λλ€.
π‘ μ½λ
import java.util.*;
class Solution {
static int dy[] ={0,1,-1,0};
static int dx[]={1,0,0,-1};
static class Node{
int y;
int x;
public Node(int y, int x){
this.y=y;
this.x=x;
}
}
public int[] solution(String[] maps) {
List <Integer> tmp = new ArrayList<>();
// κ° λ¬Έμμ΄μ parsing ν΄μ μ΄μ°¨μ λ°°μ΄λ‘ λ§λ¦ (char arr)
int mapsLength = maps[0].length();
char arr[][]= new char [maps.length][mapsLength];
//////// charλ‘ λ°κΏμ μ΄λ₯Ό μ΄μ°¨μ λ°°μ΄λ‘ λ§λλ κ²μ μ λͺ»νλμ¦!
for (int i=0; i<maps.length; i++){
for (int j=0; j<mapsLength; j++){
arr[i][j]= maps[i].charAt(j);
}
}
// λ°©λ¬Ένλμ§ μ¬λΆλ₯Ό νμ
νκΈ° μν λ°°μ΄(boolean isVisited)
boolean isVisited[][] = new boolean [maps.length][mapsLength];
// BFS νμ -> arr λ°°μ΄μ λλ©΄μ μ«μλ₯Ό λ°κ²¬νλ©΄ queμ addμμΌμ€
//BFSνμμ μν QUEμ μΈ
Queue<Node> que = new LinkedList<Node>();
int sum=0;
for (int y=0; y<maps.length; y++){
for (int x=0; x<mapsLength; x++){
if (arr[y][x] != 'X' && isVisited[y][x]!=true){
sum+=arr[y][x]-'0';
que.add (new Node(y,x));
isVisited[y][x]=true;
while (!que.isEmpty()){
Node poll = que.poll();
for (int i=0; i<4; i++){
int ny= dy[i]+poll.y;
int nx= dx[i]+poll.x;
if ( ny >=0 && nx >=0 && ny <maps.length && nx <mapsLength && arr[ny][nx]!='X' && isVisited[ny][nx]!=true ){
//pollμ ν λ€ κ°μ΄ μ ν¨νλ€λ©΄ addν΄μ€ +=sum
sum+=arr[ny][nx] -'0';
que.add(new Node(ny, nx));
isVisited[ny][nx]=true;
}
}
}
// queκ° λΉκ² λλ©΄ μ§κΈκΉμ§μ ν©μ answerμ λ£μ΄μ€
tmp.add(sum);
System.out.println(tmp.get(0));
sum=0;
}
}
}
int answer[];
// for λ¬Έμ ν΅ν΄μ λ°©λ¬Ένμ§ μμ λ
ΈνΈλ₯Ό νμ
if (tmp.size()!=0){
answer = new int [tmp.size()];
Collections.sort(tmp);
for (int i=0; i<tmp.size(); i++){
answer[i]=tmp.get(i);
}
}
else {
answer= new int[1];
answer[0]=-1;
}
return answer;
}
}
'μκ³ λ¦¬μ¦ > μ½λ©ν μ€νΈ' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[νλ‘κ·Έλλ¨Έμ€] 2οΈβ£ λ€μ μλ ν° μ μ°ΎκΈ°(JAVA) (0) | 2023.03.04 |
---|---|
[νλ‘κ·Έλλ¨Έμ€] 2οΈβ£μ΅μκ° λ§λ€κΈ° (JAVA) (0) | 2023.02.24 |
[λ°±μ€] 14502: μ°κ΅¬μ (Java) (0) | 2022.10.09 |
[λ°±μ€] 2023: μ κΈ°ν μμ (Java) (0) | 2022.10.06 |
[SWEA_3307] μ΅μ₯ μ¦κ° μμ΄(LIS, Longest Increasing Subsequence) (0) | 2022.10.06 |