비트를 쪼개는 개발자

allen321@naver.com

코딩테스트

C# [프로그래머스] Lv.1 덧칠하기

MozarTnT 2023. 12. 26. 22:02
728x90
반응형

 

 

using System;

public class Solution
{
    public int solution(int n, int m, int[] section)  // n 은 벽의 미터, m은 롤러의 길이
    {
    int finish = 0; // 다 칠한 벽의 갯수
    int answer = 0; // 벽에 롤러질한 횟수

    int[] sortSection = new int[section.Length]; // 정렬할 새로운 배열 하나 생성
    Array.Copy(section, sortSection, section.Length); // 배열값 복사
    Array.Sort(sortSection); // 오름차순으로 배열 정렬

    if (m <= n && sortSection.Length <= n) // 벽의 길이는 무조건 롤러의 길이보다 크거나 같아야 하고
                                           // && 칠할 구역은 벽의 총 길이보다 짧거나 같아야함
    {
        for (int i = 0; i < sortSection.Length; i++) // 칠할벽의 길이 만큼 for문 돌리기
        {
            if (finish <= sortSection[i]) // 칠한 벽이 칠할 벽의 길이보다 작으면 반복하도록 조건 설정
            {
                finish = sortSection[i]; // 칠한 벽은 section의 첫 인덱스 값 부터
                finish = m + finish; // 롤러의 길이 만큼 이동
                answer++; // 한번 칠함
            }
        }

        return answer; // 반복이 끝나면 몇번 나왔나 확인
    }
    else
    {
        return 0; // 조건에 해당하지 않으면 0을 반환하고 종료
    }
    }
}

 

728x90
반응형