๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์•Œ๊ณ ๋ฆฌ์ฆ˜/์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œํ’€์ด

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค) ๋ฐ”ํƒ•ํ™”๋ฉด ์ •๋ฆฌ

by sh119 2025. 2. 19.

๋ฌธ์ œ)

https://school.programmers.co.kr/learn/courses/30/lessons/161990

 

ํ’€์ด1) -> ์„ฑ๋Šฅ์ด ๋” ์ข‹์€ ์ฝ”๋“œ ( ์ข€ ๋” ํšจ์œจ์ )

class Solution {
    public int[] solution(String[] wallpaper) {
        int lux = wallpaper.length;
        int luy = wallpaper[0].length();
        int rdx = 0;
        int rdy = 0;
        
        for(int i=0; i<wallpaper.length; i++){
            for(int j=0; j<wallpaper[i].length(); j++){
                if(wallpaper[i].charAt(j) == '#'){
                    lux = Math.min(lux, i);
                    luy = Math.min(luy, j);
                    rdx = Math.max(rdx, i);
                    rdy = Math.max(rdy, j);
                }   
            }
        }
        
        return new int[]{lux, luy, rdx+1, rdy+1};
    }
}

 

ํ’€์ด2) -> ์„ฑ๋Šฅ์€ ๋น„์Šทํ•˜๊ฑฐ๋‚˜ StreamAPI์‚ฌ์šฉ์‹œ ๋‚ด๋ถ€์ ์œผ๋กœ ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ ๋น„์šฉ์ด ์ถ”๊ฐ€๋˜์–ด ์กฐ๊ธˆ ๋” ๋–จ์ด์งˆ ์ˆ˜ ์žˆ์Œ but, ๊ฐ€๋…์„ฑ ํ–ฅ์ƒ๊ณผ ์ตœ์†Œ, ์ตœ๋Œ€๊ฐ’ ์ฐพ์„ ๋•Œ ํšจ์œจ์ 

import java.util.stream.IntStream;

class Solution {
    public int[] solution(String[] wallpaper) {
        int lux = IntStream.range(0, wallpaper.length)
                .filter(i -> wallpaper[i].contains("#"))
                .findFirst().orElse(0); // ์ตœ์†Œ๊ฐ’ findFirst()
        
        int rdx = IntStream.range(0, wallpaper.length)
                .filter(i -> wallpaper[i].contains("#"))
                .reduce((first, second) -> second).orElse(0); // ์ตœ๋Œ€๊ฐ’ reduce()
        
        int luy = IntStream.range(0, wallpaper[0].length())
                .filter(j -> IntStream.range(0, wallpaper.length).anyMatch(i -> wallpaper[i].charAt(j) == '#'))
                .findFirst().orElse(0);
        
        int rdy = IntStream.range(0, wallpaper[0].length())
                .filter(j -> IntStream.range(0, wallpaper.length).anyMatch(i -> wallpaper[i].charAt(j) == '#'))
                .reduce((first, second) -> second).orElse(0);
        
        return new int[]{lux, luy, rdx + 1, rdy + 1};
    }
}