문제풀이/구름
[구름LEVEL] 근묵자흑
Hyeon-Uk
2021. 3. 18. 23:57
반응형
level.goorm.io/exam/47881/%EA%B7%BC%EB%AC%B5%EC%9E%90%ED%9D%91/quiz/1
구름LEVEL
코딩테스트에서 가장 높은 비중을 차지하는 알고리즘 문제를 제작하고 풀이할 수 있는 온라인 저지 서비스입니다. 기업에서 선호하는 C, C++, 파이썬(Python), 자바(Java), 자바스크립트(Javascript) 이
level.goorm.io
-풀이-
모든 수를 같게만드려면, 그 수열중 최솟값으로 다 바꿔야 한다.
최솟값을 포함한 k개만큼을 최솟값으로 변경 시킨뒤, k개의 양끝을 기준으로 k-1개를 늘리고, 다시 그 양끝을 기준으로 k-1개를 늘리면된다.
따라서
처음 1번은 최솟값을 기준으로 k개를 변경시키는 작업, 나머지 횟수는 n-k개를 k-2개로 나누는 작업을 시행한 횟수가 된다. 이때 k-2개로 나누어떨어지지 않으면 한번 더 변경시켜야하므로 조건을 추가해주자
-시간복잡도-
단순 계산이므로 O(1)이된다.
-코드-
#include <stdio.h>
int main() {
int arr[100000];
int n,k,i;
int cnt=1;
scanf("%d %d",&n,&k);
for(i=0;i<n;i++){
scanf("%d",&arr[i]);
}
n-=k;
k--;
cnt+=(n%k==0?n/k:n/k+1);
printf("%d",cnt);
return 0;
}
반응형