← Back to List

12026번: BOJ 거리 ↗

Solutions

C++14
573 B | 573 chars
#include <iostream>
#include <string>
#define Mx 9999999
using namespace std;
int N,D[1100];
string a;
int main()
{
	cin>>N;
	cin>>a;
	for(int x=0; x<N; x++)
	{
		D[x]=Mx;
	}
	D[0]=0;
	for(int x=1; x<N; x++)
	{
		for(int y=0; y<x; y++)
		{
			if(a[y]=='J'&&a[x]=='B')
			{
				if(D[y]+(y-x)*(y-x)<D[x])D[x]=D[y]+(y-x)*(y-x);
			}
			else if(a[y]=='B'&&a[x]=='O')
			{
				if(D[y]+(y-x)*(y-x)<D[x])D[x]=D[y]+(y-x)*(y-x);
			}
			else if(a[y]=='O'&&a[x]=='J')
			{
				if(D[y]+(y-x)*(y-x)<D[x])D[x]=D[y]+(y-x)*(y-x);
			}
		}
	}
	if(D[N-1]!=Mx)cout<<D[N-1];
	else cout<<-1;
}