코틀린-안드로이드

11일차)알고리즘 문제(바탕화면 정리)

songyooho 2024. 6. 2. 22:27

>알고리즘 문제

1. 문제

 

2. 솔루션

class Solution {
    fun solution(wallpaper: Array<String>): IntArray {
        var answer: IntArray = intArrayOf()
        
        var w=wallpaper[0].length-1
        var h=wallpaper.size-1
        
        
        for(i:Int in 0..h){
            if(wallpaper[i].contains('#')){
                answer+=i
                break
            }
        }
        
        for(i:Int in 0..w){
            for(j:Int in 0..h){
                if (wallpaper[j][i]=='#'){
                    answer+=i
                    break
                }
            }
            if(answer.size==2){
                break
            }
        }
        
        
        for(i:Int in h downTo 0){
            if(wallpaper[i].contains('#')){
                answer+=i+1
                break
            }
        }
        
        for(i:Int in w downTo 0){
            for(j:Int in 0..h){
                if (wallpaper[j][i]=='#'){
                    answer+=i+1
                    break
                }
            }
            if(answer.size==4){
                break
            }
        }
        
        
        return answer
    }
}

 

-rux와 rdx는 각 string을 검사해서 해결. rux는 앞에서부터 검사해 맨먼저 나오는것, rdx는 뒤부터 검사해 맨 먼저 나오는것.

-ruy와 rdy는 각 string의 동일 인덱스에 위치한 문자들을 묶어 검사. 마찬가지로 ruy는 앞에서부터, rdy는 뒤에서부터 검사.

-rd값들은 +1을 해줌