주녘공부일지

[프로그래머스 C#] Lv.1 바탕화면 정리 본문

CodingTest/Programmers Lv.1

[프로그래머스 C#] Lv.1 바탕화면 정리

주녘 2023. 12. 26. 20:44

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

1. 정답코드 및 핵심 아이디어, 유의사항

드래그가 될 영역은 무조건 직사각형 형태로 한번에 드래그하기 위해서는 각 y, x축에 대하여 최솟값 좌표부터 최대값 좌표 + 1까지 드래그해야 함 ( 왼쪽 위 좌표를 가리키게 되어 최대 값은 + 1 )

즉, 문제에 리턴 값을 { minY, minX, maxY, maxX } 로 둘 수 있음

 

코드 참조

    using System;

    public class Solution
    {
        public int[] solution(string[] wallpaper)
        {
            // 반대되는 값을 세팅
            int minY = wallpaper.Length - 1;
            int minX = wallpaper[0].Length - 1;
            int maxY = 0;
            int maxX = 0;
            
            // 모든 인덱스 순회
            for (int y = 0; y < wallpaper.Length; y++)
            {
                for (int x = 0; x < wallpaper[0].Length; x++)
                {
                    if (wallpaper[y][x] == '#')
                    {
                        if (y < minY) minY = y;
                        if (y > maxY) maxY = y;
                        if (x < minX) minX = x;
                        if (x > maxX) maxX = x;
                    }
                }
            }

            // 드래그 도착지는 +1씩
            maxY++; maxX++;

            return new int[4] { minY, minX, maxY, maxX };
        }
    }