[백준/BOJ] 12970. AB [Gold 4]

jychan99·2022년 3월 23일
0
post-thumbnail
  1. AB

문제출처 : https://www.acmicpc.net/problem/12970

code

#include <iostream>
#include <string>
using namespace std;

int main()
{
	int N, K, cnt = 0;
	string S;
	cin >> N >> K;
	
	if ((N / 2) * (N - (N / 2)) < K)
		S = "-1";
	else if ((N / 2) * (N - (N / 2)) == K)
		for (int i = 0; i < N; i++)
		{
			if (i < N / 2)
				S.append("A");
			else
				S.append("B");
		}
	else if(K==0)
		for (int i = 0; i < N; i++)
		{
			if (i == N-1)
				S.append("A");
			else
				S.append("B");
		}
	else
	{
		for (int i = 0; i < N; i++)
			S.append("B");

		for (int i = 0; i < N; i++)
		{
			if (K - (i * (N - i)) >= 0)
				cnt = i;
			else
				break;
		}
		K = K - (cnt * (N - cnt));
		for (int i = 0; i < cnt; i++)
			S[i] = 'A';
		if (K != 0)
		{
			K += cnt;
			S[N - 1 - K] = 'A';
		}
	}
	cout << S;

	return 0;
}

뭐 특별한 방법은 없었고, 전부다 B로 채운상태에서 앞부분부터 A를 채워서K의 갯수를 맞춰줬다.

profile
내가 지금 두려워 하고 있는 일이 바로 내가 지금 해야 할 일이다. 🐥

0개의 댓글