본문 바로가기
알고리즘/구름

[ 구름 / BF ] 근묵자흑 풀이

by 뎁꼼 2020. 6. 26.

1. 문제


 

 

구름EDU - Be Really Excellent!

구름EDU는 전국 대학, 기업 등에서 활용 중인 온라인 학습 및 교수 마켓플레이스입니다. 다양한 IT분야에 대해 배워 보세요. 여러분의 커리어 패스에 확실한 도움을 드립니다.

edu.goorm.io

 

 

2. 소스코드


- 구름 처음 해봤는데, 너~무 불편하다. 프로그래머스도 별로였는데, 프로그래머스는 선녀였다!

- 배열의 모든 수를 최소 횟수로, 가장 낮은 숫자(1)로 바꾸는 문제.

- 처음 1이 있는 idx를 두고, 처음에 1로 바꾸는 모든 경우의 수를 브루트 포스 했다.

- 구름 싫다.

 

소스코드

#include <iostream>
#include <vector>

using namespace std;

int n, k, idx, ans = 9999999;
vector<int> nums;

int main() {
	cin >> n >> k;
	nums.resize(n);
	for (int i = 0; i < n; ++i) {
		cin >> nums[i];
		if (nums[i] == 1) idx = i;
	}

	for (int i = 0; i < k; ++i) {
		int start_idx = idx - (k - 1) + i;
		int end_idx = idx + i;
		if (start_idx < 0 or end_idx > n) continue;

		int temp = 1;
	
		temp += (start_idx) / (k - 1);
		if ((start_idx) % (k - 1) != 0) temp++;
	 
		temp += (n - 1 - end_idx) / (k - 1);
		if ((n - 1 - end_idx) % (k - 1) != 0) temp++;
	 
		if (ans > temp) ans = temp;
	}
	cout << ans << '\n';
}