문제 링크 - https://www.acmicpc.net/problem/12000
🌱 문제
🌱 풀이
- 각 방에 있는 소의 마리 수를 cow배열에 입력받는다.
- 1번방부터~n번방까지 각 방의 문이 잠금해제 되었을때, 소들이 움직이는 총 거리를 구한다.
- 예를들어, 2번방의 외부문을 열었을때의 소들이 움직이는 총합을 구한다고 가정하면
2번방의 소들이 움직이는 거리 + 3번방의 소들이 움직이는 거리 + 4, 5, 1번방의 소들의 움직이는 거리를 sum에 저장한다.
- 이때, i번 방에있는 소들이 움직여야하는 거리의 총합은 cow[i] x weight이다.
- weight는 현재 방번호가 기준이 되는 방 번호에서 1씩 커질수록 가중치도 그만큼 증가한다.
- 최소 거리를 anwer에 기록한다.
🌱 코드
#include <iostream>
using namespace std;
#define MAX 2147483647
int cow[1001];
int n;
int sum,weight;
int answer=MAX;
int main(){
cin>>n;
for(int i=1; i<=n; i++){
cin>>cow[i];
}
for(int i=1; i<=n; i++){
int cnt=n;
weight=0;
sum=0;
while(cnt--){
sum+=(weight*cow[i]);
if(i==n){
i=1;
weight++;
continue;
}
i++; weight++;
}
if(answer>sum)
answer=sum;
}
cout<<answer<<'\n';
}