λ¬Έμ λ§ν¬
https://school.programmers.co.kr/learn/courses/30/lessons/42891
무μ§κ° λΌμ΄λΈ λ°©μ‘μ νκ³ μλ€. Kμ΄ νμ λ€νΈμν¬ μ₯μ λ‘ μΈν΄ λ°©μ‘μ΄ μ€λ¨λλ€. μ€λ¨ λ μ΄ν λͺ λ² μμλΆν° λ¨Ήμ΄μΌνλμ§ λ¬΄μ§μκ² μλ €μ£Όμ.
νμ΄
ν¨μ¨μ± ν μ€νΈμμλ kμ λ²μκ° 1λΆν° 2 x 10^13κΉμ§ μ£Όμ΄μ§κΈ° λλ¬Έμ μ§μ νλμ© λ¨Ήμ΄μ Kμ΄ ν λͺ λ²μ λ¨Ήλμ§ μμλ΄λ €λ©΄ O(20μ‘°) λ§νΌμ μκ°μ΄ κ±Έλ € μκ°μ΄κ³Όλ₯Ό λ°κ²λλ€.
μ§μ λ¨Ήμ΄λ³΄λ λ°©λ²μΌλ‘λ μ νμ± ν μ€νΈλ ν΅κ³Όν μ§λΌλ ν¨μ¨μ± ν μ€νΈλ μ λ ν΅κ³Όνμ§ λͺ»νλ€.
λλ 곡λΆνλ μλΉ΅λ§λμ λΈλ‘κ·Έλ₯Ό μ°Έκ³ νλ©° 곡λΆνλ€.
λ¨Όμ μ£Όμ΄μ§ μμλ₯Ό μ΄ν΄λ³΄μ.
μ
λ ₯κ° γ [3, 1, 2], 5
1λ² μμλΆν° μ°¨λ‘λ‘ λ¨Ήλλ° 3, 1, 2μ΄μ μκ°μ΄ 걸리며 λ€νΈμν¬ μ€λ₯λ 5μ΄ νμ λ°μνλ€.
λ¨μμλ μμλ€ μ€μμ κ°μ₯ μ μ μκ°μ΄ νμν μμμ μλͺ¨ν λμμ λͺ¨λ μμμ μμ·¨ν μ μλ€.
μ¦ μμμ μκ° μμΌλ‘ μ λ ¬νλ©΄ [1, 2, 3] μ΄ λκ³
κ°μ₯ μ μ μκ°μ΄ μλͺ¨λλ μμμ μλͺ¨κΈ°κ°μ 1μ΄μ΄λ€. ν λ°ν΄ λμμ λͺ¨λ μμμ μμ·¨ν μ μλ€λ λ»μ΄λ€.
1λ°ν΄ * 3κ°(λ¨μ μμμ μ) = 3μ΄.
3μ΄κ° μ§λκ³ λμ μ΅μ νλμ μμμ΄ λͺ¨λ μλͺ¨λλ€λ λ»μ΄λ€.
μ°λ¦¬λ μ§μ μννμ§ μκ³ λ, λ¨μ μμ μ€ μ²μ μμμ΄ μμ΄μ§λ λ° κ±Έλ¦¬λ μκ°μ μ μ μλ€.
μ΄ν μμμ [0, 1, 2] κ° λκ³ λ¨μ μμμ 2κ°κ° λλ€.
λ¨μμλ μμμμ 0μ΄ λμ΄λ²λ¦° μμμ μλ§νΌ λΉΌμ λ¨μ μμμ μλ₯Ό μμλΈλ€.
λ¨μ μμ μ€ μλͺ¨ κΈ°κ°μ΄ κ°μ₯ μ μ μμμ μλͺ¨κΈ°κ°μ 1μ΄λ€.
1λ°ν΄ * 2κ°(λ¨μ μμμ μ) = 2μ΄.
2μ΄κ° μ§λμΌ λ μλ‘μ΄ μμμ΄ λͺ¨λ μλͺ¨λλ€.
2μ΄ μ΄ν λ¨μ μμμ [0, 0, 1] μ΄ λλ€.
μ΄λ K = 3 + 2λ‘ 5μ΄.
λ€νΈμν¬ λ§λΉ μκ°μΈ 5μ΄κ° λμκ³ , λ€μμ λ¨Ήμ μμμ λ¨μ μμλ€ μ€ μ²« λ²μ§Έλ‘ λ±μ₯νλ μμμ΄ λ΅μ΄ λλ€.
νμ§λ§ μ λ ¬ ν μ΄νμ΄κΈ° λλ¬Έμ λ¨μμλ μμλ€μ΄ κΈ°μ‘΄μ λͺ λ²μ§Έ μμμ΄μλ μ§ μ μ μλ€.
λ°λΌμ μμμ μ λ ¬νκΈ° μ foods λΌλ μλ‘μ΄ pair<int,int> 벑ν°λ₯Ό λ§λ€μ΄μ
foods -> first μλ μμμ μλͺ¨ μκ°μ, foods -> second μλ μμμ λ²νΈλ₯Ό μ μ₯ν΄λλ€.
μμλ₯Ό μ‘°κΈ λ ν¬κ² λ€μ΄λ³΄μ.
μ
λ ₯κ° γ [4, 2, 2, 2, 15, 4], 16
6κ°μ μμμ΄ μ‘΄μ¬νλ©°, λ€νΈμν¬λ 16μ΄ νμ λ§λΉ λλ€.
λ¨Όμ μμλ€μ μκ° μμλλ‘ μ λ ¬νλ€ => [2, 2, 2, 4, 4, 15]
μ΄κΈ° λ¨μμλ μμμ μλ μ΄ μμμ μμ κ°λ€ N = 6.
μμ§λλλ° κ°μ₯ μ μ μκ°μ΄ 걸리λ μμμ μλͺ¨ μκ°μ 2μ΄λ€.
νμ νμ λ λ°ν΄λ₯Ό λ λμμλ μμ ν μλͺ¨λλ μμμ΄ μλ€λ μλ―Έμ΄λ€.
2λ°ν΄ * 6κ°(λ¨μ μμ) = 12μ΄.
12μ΄κ° μ§λκ³ μλ‘κ² μμ ν μλͺ¨λ μμμ΄ λμ¨λ€λ λ»μ΄λ€.
2λ°ν΄ ν λͺ¨λ μμ§λ μμμ 3κ°. λ°λΌμ λ¨μ μμμ 6 - 3 = 3κ°
νμ¬ νμ νμ μν©μ [0, 0, 0, 2, 2, 15]
μμ§λλλ° κ°μ₯ μ μ μκ°μ΄ 걸리λ μμμ μλͺ¨ μκ°μ 2μ΄λ€.
2λ°ν΄ * 3κ°(λ¨μ μμ) = 6μ΄.
λ λ€μ 6μ΄κ° μ§λμΌ μλ‘μ΄ μμμ΄ μμ ν μλͺ¨λλ€.
κ·Έλ°λ° 12μ΄ + 6μ΄ = 18μ΄ > k
μλ‘μ΄ μμμ΄ μλͺ¨λκΈ° μ μ λ€νΈμν¬ μ€λ₯κ° λ°μνλ€λ λ»μ΄λ€.
νμ¬ μκ°μ 12μ΄κ° μ§λ μνμ΄λ―λ‘ 4μ΄λ€μ μ€λ₯κ° λ°μνλ κ²μ μ μ μλ€.
λ¨μ μμμ 3κ°. μ¦ νλ°ν΄κ° λκ³ λ 1μ΄κ° μ§λ¬μ λ μ€λ₯κ° λ°μνλ€.
λ°λΌμ 1μ΄κ° μ§λ ν μ΄λ€ μμμ λ¨Ήκ² λ μ§λ₯Ό ꡬνλ κ²κ³Ό λκ°λ€.
k(λ¨μ μκ°) %= n(λ¨μ μμμ μ) μ κ³Όμ μ ν΅ν΄ μννλ μκ°μ μ€μ¬μ€λ€.
λ¨μ μμλ€ [ 2, 2, 15 ] μ€ 1μ΄ νμ 첫λ²μ§Έ μμμ λ¨Ήκ²λκ³ , λ°©μ‘μ λ€μ μΌ°μ λ λ¨Ήμ΄μΌ ν μμμ λ λ²μ§Έμ μλ μμμ΄λ€.
λ¨μ μμλ€μ κΈ°μ‘΄μ μμ λ²νΈ μμλλ‘ μ λ ¬ν΄ μ€ ν, k λ²μ§Έμ μλ μμμ μμ λ²νΈλ₯Ό 리ν΄νλ©΄ λλ€.
μ½λ μμ±
|
#include <bits/stdc++.h>
using namespace std;
bool cmp(const pair<int,int>& a, const pair<int,int>& b){
if(a.second < b.second)
return true;
return false;
}
int solution(vector<int> food_times, long long k) {
int answer = 0;
vector<pair<int,int>> foods;
for(int i = 0; i<food_times.size(); i++)
foods.push_back({food_times[i], i + 1}); //걸리λ μκ°, μλ μμ
//μ λ ¬ νμλ μλ μμλ₯Ό μμ§ μκΈ°μν΄μ
sort(foods.begin(), foods.end());//λ¨Ήλλ° κ±Έλ¦¬λ μκ°μμ λ°λΌ μ λ ¬
int n = food_times.size(); //λ¨μμλ μμμ κ°μ
int pre = 0; //μ§μ μμμ λ€λ¨Ήμ μκ°
for(vector<pair<int,int>>::iterator it = foods.begin(); it != foods.end(); it++){
long long spend = (long long)(it->first - pre) * n;
if(spend == 0){ //μ΄λ―Έ μκ°μ΄ κ³μ°λ μμμ
n--;
continue;
}
if(spend <= k){ //μμ§ λ°©μ‘μ΄ μ’
λ£λμ§ μμ
k -= spend;
pre = it->first;
n--;
}
else{ //λ°©μ‘μκ° μ΄κ³Ό => μνλ₯Ό ν΅ν΄ λͺ λ²μ§Έ μμμ λ¨Ήμ΄μΌν μ§ μ°ΎμμΌν¨
k %= n; //kκ° λ¨μμλ μμ μλ³΄λ€ λ§μΌλ©΄ μ¬λ¬λ² νμ ν΄μΌν¨
sort(it, foods.end(), cmp); //λ¨μμλ μμμ λ²νΈμμλλ‘ μ λ ¬
return (it + k)->second;
}
}
return -1;
}
|
cs |
ν λ°ν΄λ₯Ό λλλ° κ±Έλ¦¬λ μκ°μ΄, λ¨μ μμμ μμ κ°μ κ²μ΄λΌλ μκ°μ νμ§λ§
λλ ν λ²μ ν λ°ν΄μ© λμμ μκ°μ΄κ³Όλ₯Ό λ°μλ€.
μ¬λ¬λ°ν΄λ₯Ό ν λ²μ κ³μ°νλ € νμ§λ§, λ§μ½ kλ₯Ό λκ²λμ λ μ΄λ»κ² μ²λ¦¬ν΄μΌν μ§ λͺ°λΌμ λͺ» νμλ€.
μκ³ λ¦¬μ¦μ μνλ μ¬λλ€μ 보면 μ΄λ»κ² μ΄λ° λ°©λ²μ μκ° ν΄λ΄λ μ§ μ κΈ°νλ€.
'νλ‘κ·Έλλ¨Έμ€ > 4λ¨κ³' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[νλ‘κ·Έλλ¨Έμ€ Lv4] : κ°μ¬ κ²μ (0) | 2022.07.12 |
---|---|
[νλ‘κ·Έλλ¨Έμ€ Lv4] : λ¨μ΄ νΌμ¦ (0) | 2022.07.11 |
[νλ‘κ·Έλλ¨Έμ€ Lv4] : μ§ν μ΄λ (0) | 2022.07.11 |
[νλ‘κ·Έλλ¨Έμ€ Lv4] : λλμ§ (0) | 2022.06.29 |
[νλ‘κ·Έλλ¨Έμ€ Lv4] : μ§κ²λ€λ¦¬ (0) | 2022.06.21 |