ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค / level.2 / ๋‹ค๋ฆฌ๋ฅผ ์ง€๋‚˜๋Š” ํŠธ๋Ÿญ(C++)

2023. 3. 21. 00:53ยท๐Ÿ–ฅ๏ธ Study Note/Coding Test

๋ฌธ์ œ ์„ค๋ช…

ํŠธ๋Ÿญ ์—ฌ๋Ÿฌ ๋Œ€๊ฐ€ ๊ฐ•์„ ๊ฐ€๋กœ์ง€๋ฅด๋Š” ์ผ์ฐจ์„  ๋‹ค๋ฆฌ๋ฅผ ์ •ํ•ด์ง„ ์ˆœ์œผ๋กœ ๊ฑด๋„ˆ๋ ค ํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ํŠธ๋Ÿญ์ด ๋‹ค๋ฆฌ๋ฅผ ๊ฑด๋„ˆ๋ ค๋ฉด ์ตœ์†Œ ๋ช‡ ์ดˆ๊ฐ€ ๊ฑธ๋ฆฌ๋Š”์ง€ ์•Œ์•„๋‚ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฆฌ์—๋Š” ํŠธ๋Ÿญ์ด ์ตœ๋Œ€ bridge_length๋Œ€ ์˜ฌ๋ผ๊ฐˆ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋‹ค๋ฆฌ๋Š” weight ์ดํ•˜๊นŒ์ง€์˜ ๋ฌด๊ฒŒ๋ฅผ ๊ฒฌ๋”œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹จ, ๋‹ค๋ฆฌ์— ์™„์ „ํžˆ ์˜ค๋ฅด์ง€ ์•Š์€ ํŠธ๋Ÿญ์˜ ๋ฌด๊ฒŒ๋Š” ๋ฌด์‹œํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ํŠธ๋Ÿญ 2๋Œ€๊ฐ€ ์˜ฌ๋ผ๊ฐˆ ์ˆ˜ ์žˆ๊ณ  ๋ฌด๊ฒŒ๋ฅผ 10kg๊นŒ์ง€ ๊ฒฌ๋””๋Š” ๋‹ค๋ฆฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฌด๊ฒŒ๊ฐ€ [7, 4, 5, 6]kg์ธ ํŠธ๋Ÿญ์ด ์ˆœ์„œ๋Œ€๋กœ ์ตœ๋‹จ ์‹œ๊ฐ„ ์•ˆ์— ๋‹ค๋ฆฌ๋ฅผ ๊ฑด๋„ˆ๋ ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ฑด๋„ˆ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ฒฝ๊ณผ ์‹œ๊ฐ„ ๋‹ค๋ฆฌ๋ฅผ ์ง€๋‚œ ํŠธ๋Ÿญ  ๋‹ค๋ฆฌ๋ฅผ ๊ฑด๋„ˆ๋Š” ํŠธ๋Ÿญ ๋Œ€๊ธฐ ํŠธ๋Ÿญ
0 [] [] [7,4,5,6]
1~2 [] [7] [4,5,6]
3 [7] [4] [5,6]
4 [7] [4,5] [6]
5 [7,4] [5] [6]
6~7 [7,4,5] [6] []
8 [7,4,5,6] [] []

๋”ฐ๋ผ์„œ, ๋ชจ๋“  ํŠธ๋Ÿญ์ด ๋‹ค๋ฆฌ๋ฅผ ์ง€๋‚˜๋ ค๋ฉด ์ตœ์†Œ 8์ดˆ๊ฐ€ ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค.

solution ํ•จ์ˆ˜์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๋‹ค๋ฆฌ์— ์˜ฌ๋ผ๊ฐˆ ์ˆ˜ ์žˆ๋Š” ํŠธ๋Ÿญ ์ˆ˜ bridge_length, ๋‹ค๋ฆฌ๊ฐ€ ๊ฒฌ๋”œ ์ˆ˜ ์žˆ๋Š” ๋ฌด๊ฒŒ weight, ํŠธ๋Ÿญ ๋ณ„ ๋ฌด๊ฒŒ truck_weights๊ฐ€ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค. ์ด๋•Œ ๋ชจ๋“  ํŠธ๋Ÿญ์ด ๋‹ค๋ฆฌ๋ฅผ ๊ฑด๋„ˆ๋ ค๋ฉด ์ตœ์†Œ ๋ช‡ ์ดˆ๊ฐ€ ๊ฑธ๋ฆฌ๋Š”์ง€ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•˜์„ธ์š”.

์ œํ•œ ์กฐ๊ฑด

  • bridge_length๋Š” 1 ์ด์ƒ 10,000 ์ดํ•˜์ž…๋‹ˆ๋‹ค.
  • weight๋Š” 1 ์ด์ƒ 10,000 ์ดํ•˜์ž…๋‹ˆ๋‹ค.
  • truck_weights์˜ ๊ธธ์ด๋Š” 1 ์ด์ƒ 10,000 ์ดํ•˜์ž…๋‹ˆ๋‹ค.
  • ๋ชจ๋“  ํŠธ๋Ÿญ์˜ ๋ฌด๊ฒŒ๋Š” 1 ์ด์ƒ weight ์ดํ•˜์ž…๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ

bridge_length  weight  truck_weights  return
2 10 [7,4,5,6] 8
100 100 [10] 101
100 100 [10,10,10,10,10,10,10,10,10,10] 110

๋‚ด ํ•ด๋‹ต

#include <string>
#include <vector>
#include <queue>

using namespace std;

int solution(int bridge_length, int weight, vector<int> truck_weights) {
    int         answer       = 0;   // ๋ชจ๋“  ํŠธ๋Ÿญ
    int         total_weight = 0;   // ๋‹ค๋ฆฌ ์œ„์˜ ํŠธ๋Ÿญ ์ „์ฒด ๋ฌด๊ฒŒ
    int         next         = 0;   // ๋‹ค์Œ์— ์ง„์ž…ํ•  ํŠธ๋Ÿญ
    queue<int>  trucks_on_bridge;   // ๋‹ค๋ฆฌ ์œ„์— ์žˆ๋Š” ํŠธ๋Ÿญ 
    
    // ๋‹ค๋ฆฌ ๊ธธ์ด์— ๋งž๊ฒŒ queue ํฌ๊ธฐ ์…‹ํŒ…
    for(int i = 0; i < bridge_length; ++i)
        trucks_on_bridge.push(-1);
    
    // ํŠธ๋Ÿญ ์ด๋™
    while(next < truck_weights.size())  // ๋งˆ์ง€๋ง‰ ํŠธ๋Ÿญ ์ง„์ž… ์‹œ์— ์ข…๋ฃŒ
    {
        // ํŠธ๋Ÿญ out
        ++answer;
        if(-1 != trucks_on_bridge.front())
        {
            total_weight -= truck_weights[trucks_on_bridge.front()];
        }
        trucks_on_bridge.pop();
        
        // ํŠธ๋Ÿญ in
        // ๋‹ค์Œ ํŠธ๋Ÿญ์˜ ๋ฌด๊ฒŒ๋ฅผ ์ถ”๊ฐ€ํ–ˆ์„ ๋•Œ, ์ œํ•œ ์ค‘๋Ÿ‰ ์ดํ•˜๋ผ๋ฉด
        if((total_weight + truck_weights[next]) <= weight)
        {
            total_weight += truck_weights[next];
            trucks_on_bridge.push(next);
            ++next;
        }
        // ๋‹ค์Œ ํŠธ๋Ÿญ์˜ ๋ฌด๊ฒŒ๋ฅผ ์ถ”๊ฐ€ํ–ˆ์„ ๋•Œ, ์ œํ•œ ์ค‘๋Ÿ‰ ์ดˆ๊ณผ๋ผ๋ฉด
        else
        {
            trucks_on_bridge.push(-1);
        }
    }
    
    // ๋งˆ์ง€๋ง‰ ํŠธ๋Ÿญ ํ†ต๊ณผ์— ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„ ์ถ”๊ฐ€
    answer += bridge_length; 
 
    return answer;
}
์ €์ž‘์žํ‘œ์‹œ ๋น„์˜๋ฆฌ ๋ณ€๊ฒฝ๊ธˆ์ง€ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'๐Ÿ–ฅ๏ธ Study Note > Coding Test' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค C++ ๋ ˆํผ๋Ÿฐ์Šค ์‚ฌ์ดํŠธ  (0) 2023.03.21
ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค / level.2 / ์ฃผ์‹๊ฐ€๊ฒฉ(C++)  (0) 2023.03.21
ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค / level.2 / ํ”„๋ฆฐํ„ฐ(C++)  (0) 2023.03.16
ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค / level.2 / ๊ธฐ๋Šฅ๊ฐœ๋ฐœ(C++)  (0) 2023.03.16
programmers / level.1 / ๊ฐ™์€ ์ˆซ์ž๋Š” ์‹ซ์–ด(C++)  (0) 2023.03.14
'๐Ÿ–ฅ๏ธ Study Note/Coding Test' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค C++ ๋ ˆํผ๋Ÿฐ์Šค ์‚ฌ์ดํŠธ
  • ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค / level.2 / ์ฃผ์‹๊ฐ€๊ฒฉ(C++)
  • ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค / level.2 / ํ”„๋ฆฐํ„ฐ(C++)
  • ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค / level.2 / ๊ธฐ๋Šฅ๊ฐœ๋ฐœ(C++)
Beankong_
Beankong_
์ฃผ๋‹ˆ์–ด ํด๋ผ์ด์–ธํŠธ ํ”„๋กœ๊ทธ๋ž˜๋จธ ๊ณต๋ถ€ ๊ธฐ๋ก
  • Beankong_
    Beankong's Devlog
    Beankong_
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ์ „์ฒด ๊ธ€ (146)
      • โ›… Daily (0)
      • ๐Ÿ–ฅ๏ธ Study Note (2)
        • C++ (1)
        • Unreal Engine (5)
        • Coding Test (123)
        • Design Patteren (5)
        • VCS (Git..) (1)
        • Server (1)
      • ๐Ÿงญ Devlog (8)
        • ์˜ค๋‹ต๋…ธํŠธ (4)
        • UE5 GameLift Server Test Project (1)
        • TIL (3)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ๋งํฌ

    • ๊ณต์ง€์‚ฌํ•ญ

    • ์ธ๊ธฐ ๊ธ€

    • ํƒœ๊ทธ

      cpp
      propertyaccess
      unrealengine build system
      ๊ฒŒ์ž„ํ”„๋กœ๊ทธ๋ž˜๋ฐ
      OnlineSubsystem
      ์ฝ”๋”ฉํ…Œ์ŠคํŠธ
      ๊ฒŒ์ž„ ๊ฐœ๋ฐœ
      ํ”„๋ฃŒ๊ทธ๋ž˜๋จธ์Šค
      ๊ฒŒ์ž„ ํ”„๋กœ๊ทธ๋ž˜๋ฐ
      unrealengine module
      ๊ทธ๋ฆฌ๋””(greedy)
      ํ—ฌํ…Œ์ด์ปค
      ์ตœ๋‹จ ๊ฑฐ๋ฆฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜
      UnrealEngine5
      ๊ฒŒ์ž„ ๋ชจ์ž‘
      ์•Œ๊ณ ๋ฆฌ์ฆ˜
      programmers
      UnrealEngine
      ๊ทธ๋ž˜ํ”„ ์ˆœํšŒ
      ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค
    • ์ตœ๊ทผ ๋Œ“๊ธ€

    • ์ตœ๊ทผ ๊ธ€

    • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
    Beankong_
    ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค / level.2 / ๋‹ค๋ฆฌ๋ฅผ ์ง€๋‚˜๋Š” ํŠธ๋Ÿญ(C++)
    ์ƒ๋‹จ์œผ๋กœ

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”