[ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€] level.3 - μ„ μž… μ„ μΆœ μŠ€μΌ€μ€„λ§ (C++)

2023. 5. 18. 15:01Β·πŸ–₯️ Study Note/Coding Test

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

문제 μ„€λͺ…

μ²˜λ¦¬ν•΄μ•Ό ν•  λ™μΌν•œ μž‘μ—…μ΄ n κ°œκ°€ 있고, 이λ₯Ό μ²˜λ¦¬ν•˜κΈ° μœ„ν•œ CPUκ°€ μžˆμŠ΅λ‹ˆλ‹€.

이 CPUλŠ” λ‹€μŒκ³Ό 같은 νŠΉμ§•μ΄ μžˆμŠ΅λ‹ˆλ‹€.

  • CPUμ—λŠ” μ—¬λŸ¬ 개의 μ½”μ–΄κ°€ 있고, μ½”μ–΄λ³„λ‘œ ν•œ μž‘μ—…μ„ μ²˜λ¦¬ν•˜λŠ” μ‹œκ°„μ΄ λ‹€λ¦…λ‹ˆλ‹€.
  • ν•œ μ½”μ–΄μ—μ„œ μž‘μ—…μ΄ λλ‚˜λ©΄ μž‘μ—…μ΄ μ—†λŠ” μ½”μ–΄κ°€ λ°”λ‘œ λ‹€μŒ μž‘μ—…μ„ μˆ˜ν–‰ν•©λ‹ˆλ‹€.
  • 2개 μ΄μƒμ˜ μ½”μ–΄κ°€ 남을 경우 μ•žμ˜ μ½”μ–΄λΆ€ν„° μž‘μ—…μ„ 처리 ν•©λ‹ˆλ‹€.

μ²˜λ¦¬ν•΄μ•Ό 될 μž‘μ—…μ˜ 개수 nκ³Ό, 각 μ½”μ–΄μ˜ μ²˜λ¦¬μ‹œκ°„μ΄ λ‹΄κΈ΄ λ°°μ—΄ cores κ°€ λ§€κ°œλ³€μˆ˜λ‘œ μ£Όμ–΄μ§ˆ λ•Œ, λ§ˆμ§€λ§‰ μž‘μ—…μ„ μ²˜λ¦¬ν•˜λŠ” μ½”μ–΄μ˜ 번호λ₯Ό return ν•˜λŠ” solution ν•¨μˆ˜λ₯Ό μ™„μ„±ν•΄μ£Όμ„Έμš”.

μ œν•œ 사항

  • μ½”μ–΄μ˜ μˆ˜λŠ” 10,000 μ΄ν•˜ 2이상 μž…λ‹ˆλ‹€.
  • μ½”μ–΄λ‹Ή μž‘μ—…μ„ μ²˜λ¦¬ν•˜λŠ” μ‹œκ°„μ€ 10,000μ΄ν•˜ μž…λ‹ˆλ‹€.
  • μ²˜λ¦¬ν•΄μ•Ό ν•˜λŠ” 일의 κ°œμˆ˜λŠ” 50,000개λ₯Ό λ„˜κΈ°μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

μž…μΆœλ ₯ 예

n cores result
6 [1,2,3] 2

μž…μΆœλ ₯ 예 μ„€λͺ…

μž…μΆœλ ₯ 예 #1

처음 3개의 μž‘μ—…μ€ 각각 1,2,3λ²ˆμ— λ“€μ–΄κ°€κ³ , 1μ‹œκ°„ λ’€ 1번 코어에 4번째 μž‘μ—…,λ‹€μ‹œ 1μ‹œκ°„ λ’€ 1,2번 코어에 5,6번째 μž‘μ—…μ΄ λ“€μ–΄κ°€λ―€λ‘œ 2λ₯Ό λ°˜ν™˜ν•΄μ£Όλ©΄ λ©λ‹ˆλ‹€.

λ‚΄ ν•΄λ‹΅

#include <string>
#include <vector>

using namespace std;

int solution(int n, vector<int> cores) 
{
    if(n <= cores.size())
        return n;
    
    int min_time = -1;
    int max_time = 2e5;
    while(min_time+1 < max_time)
    {
        int avg_time = (min_time+max_time)/2;
        int count = cores.size();            
        
        for(const auto& i : cores)
            count += (avg_time / i);
            
        if(count >= n)
            max_time = avg_time;
        else
            min_time = avg_time;
    }
    
    int count = cores.size();
    
    for(int i = 0; i < cores.size(); ++i)
        count += min_time/cores[i];
    for(int i = 0; i < cores.size(); ++i)
    {
        if((min_time+1) % cores[i] == 0) 
            ++count;
        if(count == n)
            return i+1;
    }
    
    return 0;
}
μ €μž‘μžν‘œμ‹œ λΉ„μ˜λ¦¬ λ³€κ²½κΈˆμ§€ (μƒˆμ°½μ—΄λ¦Ό)

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

[ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€] level.2 - λ•…λ”°λ¨ΉκΈ°(C++)  (0) 2023.05.22
[ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€] level.3 - 경주둜 건섀(C++)  (1) 2023.05.19
[ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€] level.3 - νŒŒκ΄΄λ˜μ§€ μ•Šμ€ 건물(C++)  (0) 2023.05.16
[ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€] level.3 - κ°€μž₯ λ¨Ό λ…Έλ“œ(C++)  (0) 2023.05.15
[ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€] level.3 - 징검닀리 κ±΄λ„ˆκΈ° (C++)  (0) 2023.05.12
'πŸ–₯️ Study Note/Coding Test' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
  • [ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€] level.2 - λ•…λ”°λ¨ΉκΈ°(C++)
  • [ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€] level.3 - 경주둜 건섀(C++)
  • [ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€] level.3 - νŒŒκ΄΄λ˜μ§€ μ•Šμ€ 건물(C++)
  • [ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€] level.3 - κ°€μž₯ λ¨Ό λ…Έλ“œ(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)
  • λΈ”λ‘œκ·Έ 메뉴

    • 링크

    • 곡지사항

    • 인기 κΈ€

    • νƒœκ·Έ

      κ²Œμž„ ν”„λ‘œκ·Έλž˜λ°
      OnlineSubsystem
      cpp
      unrealengine build system
      μ΅œλ‹¨ 거리 μ•Œκ³ λ¦¬μ¦˜
      κ·Έλž˜ν”„ 순회
      μ•Œκ³ λ¦¬μ¦˜
      그리디(greedy)
      UnrealEngine
      unrealengine module
      propertyaccess
      ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€
      ν”„λ£Œκ·Έλž˜λ¨ΈμŠ€
      κ²Œμž„ν”„λ‘œκ·Έλž˜λ°
      κ²Œμž„ λͺ¨μž‘
      κ²Œμž„ 개발
      programmers
      UnrealEngine5
      μ½”λ”©ν…ŒμŠ€νŠΈ
      ν—¬ν…Œμ΄μ»€
    • 졜근 λŒ“κΈ€

    • 졜근 κΈ€

    • hELLOΒ· Designed Byμ •μƒμš°.v4.10.3
    Beankong_
    [ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€] level.3 - μ„ μž… μ„ μΆœ μŠ€μΌ€μ€„λ§ (C++)
    μƒλ‹¨μœΌλ‘œ

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