주녘공부일지

[프로그래머스 C#] Lv.2 호텔 대실 본문

Programmers - C#/CodingTest Lv.2

[프로그래머스 C#] Lv.2 호텔 대실

주녘 2023. 8. 23. 19:07
728x90

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

 

프로그래머스

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

programmers.co.kr

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

- 00시 ~ 23시 59분까지의 시간 중에 동시에 사용이 불가능한 방의 개수의 최댓값을 구하면 되는 문제 

+ 하단 이미지에서 아이디어를 얻음

 

    using System;
    using System.Linq;

    public class Solution
    {
        public int solution(string[,] book_time)
        {
            int[] useRoomTimeCount = new int[1500]; // 하루는 1440분

            int startTime, endTime; // 입실, 퇴실시간
            string[] startTimeStr, endTimeStr;

            for (int i = 0; i < book_time.GetLength(0); i++)
            {
                startTimeStr = book_time[i, 0].Split(":");
                endTimeStr = book_time[i, 1].Split(":");
                
                // 단위 통일(분)
                startTime = int.Parse(startTimeStr[0]) * 60 + int.Parse(startTimeStr[1]);
                endTime = int.Parse(endTimeStr[0]) * 60 + int.Parse(endTimeStr[1]) + 10;

                // 입실시간부터 퇴실시간 + 10분까지 사용개수에 카운트
                for (int j = startTime; j < endTime; j++)
                    useRoomTimeCount[j]++;
            }

            // 가장 큰 숫자가 필요한 방의 갯수가 될 것
            return useRoomTimeCount.Max();
        }
    }

 

728x90