[ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€]level.2 - ν˜Έν…” λŒ€μ‹€(C++)

2023. 6. 18. 18:40Β·πŸ–₯️ Study Note/Coding Test

문제

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

λ‚΄ 풀이

μ‹œμž‘ μ‹œκ°„μ„ κΈ°μ€€μœΌλ‘œ μ˜ˆμ•½μ„ μ˜€λ¦„μ°¨μˆœ μ •λ¦¬ν•œλ‹€.

방을 λ°°μ •ν•˜λ©΄μ„œ 멀티셋에 λ‹€μŒ μ˜ˆμ•½μžκ°€ λ“€μ–΄μ˜¬ 수 μžˆλŠ” μ‹œκ°„μ„ μ €μž₯ν•œλ‹€. ( μ˜ˆμ•½ μ’…λ£Œ μ‹œκ°„ + 10 )

셋을 μ‚¬μš©ν•˜λŠ” μ΄μœ λŠ” μ‹œκ°„μ„ μ˜€λ¦„μ°¨μˆœ μ •λ ¬ν•˜μ—¬ λ‹€μŒ μ˜ˆμ•½μžκ°€ μ΅œλŒ€ν•œ 빨리 λ“€μ–΄μ˜¬ 수 μžˆλŠ” μ‹œκ°„μ„ κ΅¬ν•˜κΈ° μ‰½κ²Œν•˜κΈ° μœ„ν•¨μ΄λ‹€. κ·Έ μ€‘μ—μ„œ 멀티셋을 μ΄μš©ν•œ μ΄μœ λŠ” μ˜ˆμ•½ μ‹œκ°„μ΄ 쀑볡될 수 있기 λ•Œλ¬Έμ΄λ‹€.

λ‹€μŒ μ˜ˆμ•½μžλ₯Ό 받을 λ•Œ, 멀티셋에 μ €μž₯된 λ°°μ • κ°€λŠ₯ν•œ μ‹œκ°„ 쀑 μ˜ˆμ•½μžκ°€ μž…μ‹€ κ°€λŠ₯ν•œ μ‹œκ°„μ΄ μžˆλ‹€λ©΄ λ©€ν‹°μ…‹μ—μ„œ ν•΄λ‹Ή μ‹œκ°„μ„ μ‚­μ œν•˜κ³  μƒˆ μ˜ˆμ•½μžμ— 맞좰 λ°°μ • κ°€λŠ₯ν•œ μ‹œκ°„μ„ κ°±μ‹ ν•œλ‹€. μ˜ˆμ•½μžκ°€ μž…μ‹€ κ°€λŠ₯ν•œ μ‹œκ°„μ΄ μ—†λ‹€λ©΄ λ©€ν‹°μ…‹μ—μ„œ μ‚­μ œν•  κ±° 없이 λ‹€μŒ μ˜ˆμ•½μžκ°€ λ“€μ–΄μ˜¬ 수 μžˆλŠ” μ‹œκ°„μ„ μΆ”κ°€ν•˜λ©΄ λœλ‹€. 

#include <string>
#include <vector>
#include <algorithm>
#include <set>
#include <iostream>

using namespace std;

// μ‹œκ°„ μ˜€λ¦„μ°¨μˆœ μ •λ ¬
bool comp(vector<string> t1, vector<string> t2)
{
    int hour_1 = stoi(t1[0].substr(0, 2));
    int hour_2 = stoi(t2[0].substr(0, 2));
    int min_1 = stoi(t1[0].substr(3));
    int min_2 = stoi(t2[0].substr(3));

    if(hour_1 != hour_2)
        return (hour_1 < hour_2);
    else    
        return (min_1 < min_2);
}

int solution(vector<vector<string>> book_time) {
    int answer = 0;
    multiset<int> available_times; // λ°© λ°°μ • κ°€λŠ₯ μ‹œκ°„ μ €μž₯
    
    // μ‹œμž‘ μ‹œκ°„μ„ κΈ°μ€€μœΌλ‘œ μ˜ˆμ•½μ„ μ •λ ¬ν•œλ‹€
    sort(book_time.begin(), book_time.end(), comp);
    
    for(const auto& b : book_time)
    {
        // ν˜„μž¬ μ˜ˆμ•½μ˜ 체크인/체크아웃 μ‹œκ°„
        int in_time = stoi(b[0].substr(0, 2)) * 60  + stoi(b[0].substr(3));
        int out_time = stoi(b[1].substr(0, 2)) * 60  + stoi(b[1].substr(3));
        
        // λ°°μ • κ°€λŠ₯ν•œ 방이 μžˆλŠ”μ§€ μ²΄ν¬ν•œλ‹€
        auto iter = available_times.begin();
        for(; iter != available_times.end(); ++iter)
        {
            if(*iter <= in_time)
            {
                available_times.erase(iter); // λ°°μ • κ°€λŠ₯ν•œ 방이 μžˆλ‹€λ©΄ 갱신을 μœ„ν•΄ λ©€ν‹°μ…‹μ—μ„œ μ œκ±°ν•œλ‹€
                break;
            }
        }
    
        // λ°© λ°°μ • κ°€λŠ₯ μ‹œκ°„μ„ μΆ”κ°€ν•œλ‹€
        available_times.insert(out_time + 10);
    } 
    
    answer = available_times.size();
    
    return answer;
}

μ €μž‘μžν‘œμ‹œ λΉ„μ˜λ¦¬ λ³€κ²½κΈˆμ§€ (μƒˆμ°½μ—΄λ¦Ό)

'πŸ–₯️ Study Note > Coding Test' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

[ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€]level.1 - ν•˜μƒ€λ“œ 수(C++)  (0) 2023.06.20
[ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€]level.2 - 택배 μƒμž(C++)  (0) 2023.06.19
[ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€]level.2 - μ˜μ–΄ λλ§μž‡κΈ°(C++)  (0) 2023.06.18
[ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€]level.2 - μ‹œμ†Œ 짝꿍(C++)  (1) 2023.06.12
[ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€]level.1 - ν•Έλ“œν° 번호 가리기(C++)  (0) 2023.06.11
'πŸ–₯️ Study Note/Coding Test' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
  • [ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€]level.1 - ν•˜μƒ€λ“œ 수(C++)
  • [ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€]level.2 - 택배 μƒμž(C++)
  • [ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€]level.2 - μ˜μ–΄ λλ§μž‡κΈ°(C++)
  • [ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€]level.2 - μ‹œμ†Œ 짝꿍(C++)
Beankong_
Beankong_
μ£Όλ‹ˆμ–΄ ν΄λΌμ΄μ–ΈνŠΈ ν”„λ‘œκ·Έλž˜λ¨Έ 곡뢀 기둝
  • Beankong_
    Beankong's Devlog
    Beankong_
  • 전체
    였늘
    μ–΄μ œ
    • 전체 κΈ€ (141)
      • β›… Daily (0)
      • πŸ–₯️ Study Note (135)
        • Unreal Engine (5)
        • Coding Test (123)
        • Design Patteren (5)
        • VCS (Git..) (1)
        • Server (1)
      • 🧭 Devlog (6)
        • μ˜€λ‹΅λ…ΈνŠΈ (2)
        • UE5 GameLift Server Test Project (1)
        • TIL (3)
  • hELLOΒ· Designed Byμ •μƒμš°.v4.10.3
Beankong_
[ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€]level.2 - ν˜Έν…” λŒ€μ‹€(C++)
μƒλ‹¨μœΌλ‘œ

ν‹°μŠ€ν† λ¦¬νˆ΄λ°”