[μκ³ λ¦¬μ¦ μ€ν°λ] λ°±μ€ #1417 κ΅νμμ
[λ¬Έμ ]
κΈ°νΈ 1λ²μΌλ‘ μΆλ§ν λ€μμ΄λ μ κ±° μ μ νλ³΄λ³ λνμλ₯Ό 미리 μ μ μλ€.
λ€μμ΄λ λνμλ₯Ό 미리 μμλΈ ν, λ€λ₯Έ ν보λ₯Ό μ°λ μ¬λλ€μ λμΌλ‘ λ§€μν΄μ μμ μ΄ λΉμ λκ² νλ €κ³ νλ€.
λ€μμ΄κ° λ§€μν΄μΌ ν μ¬λμ μ΅μκ°μ ꡬν΄λΌ.
[Input]
N(ν보μ μ)
λμ§Έ μ€ λΆν° κ° ν보μ λνμκ° Nμ€μ κ±Έμ³μ μ λ ₯λλ€.
[Output]
λ§€μν΄μΌ ν μ¬λμ μ΅μκ°
[νμ΄]
μμ νμ
μ°μ κ°μ₯ κΈ°λ³Έμ μΈ λ°©λ²μΌλ‘ μ κ·Όν΄λ³΄μ.
μ 체 ν보μ λνμκ° votesNum[] μμ μμ°¨μ μΌλ‘ μ μ₯λμ΄ μλ€κ³ νμ.
νλ³΄κ° 3λͺ μ΄κ³ κ° ν보μ μμ λνμκ° 5,7,7μ΄μλ€κ³ νμ.
voteNum[]μμ max μμΉλ₯Ό ꡬνκ³ , λ€μμ΄(κΈ°νΈ 1λ²)κ° μ΅λκ°μ΄ μλ κ²½μ°
ν΄λΉ max μμΉμμ 1μ λΉΌκ³ , κ·Έ νλ₯Ό λ€μμ΄μκ² λν΄μ€λ€.
μ κ³Όμ μ λ°λ³΅ν΄μ λ€μμ΄μ νκ° maxνλ€κ³ λμ€λ©΄, loopλ₯Ό μ’ λ£νκ³ μ§κΈκΉμ§ λμκ° loopνμλ₯Ό printν΄μ£Όλ©΄ λλ€.
κ·Έλ λ€λ©΄, μμ νμμΌλ‘ ꡬννμ λ μ νμκ°μ λ§μ‘±ν μ μμκΉ?
N(ν보μμ μ)μ μ΅λκ°μ΄ 1000μ΄κ³ , κ° νλ³΄κ° λνν μ μλ μμ μ΅λκ°λ 1000μ΄λ€.
μ΄λ° μν©μμμ μ΅μ μ κ²½μ°λ μμ μ¬μ§μμμ κ°λ€.
κ²°κ³Όμ μΌλ‘ μ΅μ μ μν©μμλ 999λ²λ§ loopλ₯Ό λ리면 outputμ ꡬν μ μκΈ° λλ¬Έμ μμ νμμΌλ‘ μΆ©λΆν ꡬνμ΄ κ°λ₯νλ€.
** νλ²μ loopμμ μ΅λκ°μ ꡬν λ, Nλ§νΌμ 볡μ‘λκ° μΆκ°λ‘ μμλμ΄ μ΅μ μ λ°λ³΅νμλ 1000*1000μ΄λ€.
νμ§λ§ μ΄ κ°λ μ¬μ ν 2μ΄μμ μΆ©λΆν μν κ°λ₯νλ€.
[μ½λ]
#include<stdio.h>
#include<algorithm>
using namespace std;
int main() {
int voteNum[1001] = {0,}; //μ΅λ ν보μ μ 1000λͺ
int N;
scanf_s("%d",&N);
for (int i = 0;i < N;i++) {
scanf_s("%d", &voteNum[i]);
}
int M = 0;
int maxCount = 0;
for (int i = 0;i < N;i++) {
if (voteNum[i] > voteNum[M])
M = i;
if (M == 0 && voteNum[i] == voteNum[M])
M = i;
}
for (int i = 0;i < N;i++) {
if (voteNum[i] == voteNum[M])
maxCount++;
}
int count=0;
while (M != 0 || maxCount > 1) {
count++;
voteNum[M]--;
voteNum[0]++;
M = 0;
maxCount = 0;
for (int i = 0;i < N;i++) {
if (voteNum[i] > voteNum[M])
M = i;
if (M == 0 && voteNum[i] == voteNum[M])
M = i;
}
for (int i = 0;i < N;i++) {
if (voteNum[i] == voteNum[M])
maxCount++;
}
}
printf("%d", count);
}
Mμ μ΅λκ°μ μΈλ±μ€
maxCountλ μ΅λκ°μ μ λ₯Ό λ΄λ λ³μμ΄λ€.
whileμ 쑰건μ 보면, Mμ΄ 0(λ€μμ΄κ° 1λ±)μ΄μ΄λ maxCountκ° 1 μ΄μμ΄λΌλ©΄ λμ μκ° μλ€λ λ»μ΄κΈ° λλ¬Έμ maxCountμ λν 쑰건λ μΆκ°ν΄μ£Όμλ€.
[μ μΆκ²°κ³Ό]