알고리즘문제 풀어보기

C# - 프로그래머스 바탕화면정리 - 문자열 문제

rimugiri 2024. 3. 26. 10:11
728x90

이번 문제는 정말로 간단했던 문제 였는데 항상 int형 배열만 가지고 다루다 보니 string배열도 습관적으로 탐색을 이상하게 하여 시간이 오래 걸렸다

 

아래와 같이 탐색하면 당연하게도 GetLength(1)은 가능하지 않으므로 코드가 작동하지 않는다.

using System;

public class Solution {
    public int[] solution(string[] wallpaper) {
        int[] answer = new int[]{int.MaxValue, int.MaxValue, int.MinValue, int.MinValue};

        for (int i = 0; i < wallpaper.GetLength(0); i++)
        {
            for (int j = 0; j < wallpaper.GetLength(1); j++)
            {
                if (wallpaper[i][j] == '#')
                {
                    answer[0] = Math.Min(answer[0], i);
                    answer[1] = Math.Min(answer[1], j);
                    answer[2] = Math.Max(answer[2], i + 1);
                    answer[3] = Math.Max(answer[3], j + 1);

                }
            }
        }         
        return answer;
    }
}

 

아래와 같이 작성해줘야 된다..

using System;

public class Solution {
    public int[] solution(string[] wallpaper) {
        int[] answer = new int[]{int.MaxValue, int.MaxValue, int.MinValue, int.MinValue};

        for (int i = 0; i < wallpaper.Length; i++)
        {
            for (int j = 0; j < wallpaper[i].Length; j++)
            {
                if (wallpaper[i][j] == '#')
                {
                    answer[0] = Math.Min(answer[0], i);
                    answer[1] = Math.Min(answer[1], j);
                    answer[2] = Math.Max(answer[2], i + 1);
                    answer[3] = Math.Max(answer[3], j + 1);

                }
            }
        }         
        return answer;
    }
}

 

 

아 이 문제를 풀면서 어떤 문제를 만나더라도 차만을하지않고 풀어야 겠다고 다짐하였

728x90