관리 메뉴

Daehyunii's Dev-blog

λ΄‰μš°λ¦¬(1,2차원 탐색) λ³Έλ¬Έ

πŸ“š Language & CS knowledge/Algorithm (κΈ°μ΄ˆλ¬Έμ œν’€μ΄)

λ΄‰μš°λ¦¬(1,2차원 탐색)

Daehyunii 2022. 8. 31. 23:50

문제(좜처 : μΈν”„λŸ° μžλ°”μŠ€ν¬λ¦½νŠΈ μ•Œκ³ λ¦¬μ¦˜ λ¬Έμ œν’€μ΄ κ°•μ˜, μ •λ³΄μ˜¬λ¦Όν”Όμ•„λ“œ)

지도 정보가 N*N κ²©μžνŒμ— μ£Όμ–΄μ§‘λ‹ˆλ‹€. 각 κ²©μžμ—λŠ” κ·Έ μ§€μ—­μ˜ 높이가 μ“°μ—¬μžˆμŠ΅λ‹ˆλ‹€. 각 격자 판의 숫자 쀑 μžμ‹ μ˜ μƒν•˜μ’Œμš° μˆ«μžλ³΄λ‹€ 큰 μˆ«μžλŠ” λ΄‰μš°λ¦¬ μ§€μ—­μž…λ‹ˆλ‹€. λ΄‰μš°λ¦¬ 지역이 λͺ‡ 개 μžˆλŠ” 지 μ•Œμ•„λ‚΄λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ„Έμš”.
격자의 κ°€μž₯μžλ¦¬λŠ” 0으둜 μ΄ˆκΈ°ν™” λ˜μ—ˆλ‹€κ³  κ°€μ •ν•œλ‹€.

λ§Œμ•½ N=5 이고, 격자판의 μˆ«μžκ°€ λ‹€μŒκ³Ό κ°™λ‹€λ©΄ λ΄‰μš°λ¦¬μ˜ κ°œμˆ˜λŠ” 10κ°œμž…λ‹ˆλ‹€.

 

0
0
0
0
0
0
0
0
5
3
7
2
3
0
0
3
7
1
6
1
0
0
7
2
5
3
4
0
0
4
3
6
4
1
0
0
8
7
3
5
2
0
0
0
0
0
0
0
0

 

β–£ μž…λ ₯μ„€λͺ…
첫 쀄에 μžμ—°μˆ˜ N이 주어진닀.(1<=N<=50)
두 번째 쀄뢀터 N쀄에 걸쳐 각 쀄에 N개의 μžμ—°μˆ˜κ°€ 주어진닀. 각 μžμ—°μˆ˜λŠ” 100을 λ„˜μ§€ μ•ŠλŠ” λ‹€.

 

β–£ 좜λ ₯μ„€λͺ…
λ΄‰μš°λ¦¬μ˜ 개수λ₯Ό 좜λ ₯ν•˜μ„Έμš”.

 

β–£ μž…λ ₯예제 1

5
53723

37161

72534

43641

87352

 

β–£ 좜λ ₯예제 1

10

 

Tip

1) λ™μ„œλ‚¨λΆμœΌλ‘œ 이동할 수 μžˆλŠ” 이동 μ’Œν‘œλ₯Ό λ§Œλ“€μ–΄ μ£Όμ–΄μ•Ό ν•œλ‹€.

let dx = [-1,0,1,0]  

let dy = [0,1,0,-1]

λ°˜λ³΅λ¬Έμ„ 톡해 dx,dyλ₯Ό ν•œ 묢음으둜 뢁 > 동 > 남 > μ„œ λ°©ν–₯으둜 이동할 수 μžˆλ‹€.

2) μ΄λ™μ‹œ, μ£Όμ˜ν•΄μ•Ό ν•  점은 λ²”μœ„λ₯Ό λ²—μ–΄λ‚˜λŠ” 이동은 이뀄지지 μ•Šκ²Œ 쑰건을 잘 κ±Έμ–΄μ£Όμ–΄μ•Ό ν•œλ‹€.

 

 

λ¬Έμ œν’€μ΄

// λ‚΄κ°€ λ‹€μ‹œ μž‘μ„±ν•œ λ‹΅! 
function solution(map){
    let count = 0;
    let dx = [-1,0,1,0];
    let dy = [0,1,0,-1];
    let n = map.length;

    for(let i = 0 ; i < n ; i++){
        for(let j = 0 ; j < n ; j ++){
            let flag = 1;
            for(let k = 0 ; k < 4 ; k++){
                let nx = i + dx[k];
                let ny = j + dy[k];
                //μ•„λž˜ 쑰건문이 제일 μ€‘μš”ν•¨!!
                if(nx >= 0 && nx < n && ny >= 0 && ny < n &&  map[nx][ny] >= map[i][j]){
                    flag = 0;
                    break;
                }
            }
            if(flag) count++;
        }
    }
    return count;

}
 let arr=[[5, 3, 7, 2, 3], 
         [3, 7, 1, 6, 1],
         [7, 2, 5, 3, 4],
         [4, 3, 6, 4, 1],
         [8, 7, 3, 5, 2]];
console.log(solution(arr));