https://www.acmicpc.net/problem/12970
A를 세팅해놓고 B가 하나 들어갈때마다 얼마나 변화가 일어나는지 구하면 된다.
구하는 과정이 수학적이라서 수학 태그가 붙은거 같다.
특별한 코멘트가 필요 없는 평범한 그리디 문제이다.
코드는 다음과 같다.
import sys
input = sys.stdin.readline
N, K = map(int,input().split())
if (N // 2) * (N - N//2) < K:
print(-1)
for i in range(1,N//2+1):
A = i; B = N-A
if A * B >= K:
s = 'A' * (A-1) + 'B' * (B+1)
if (A-1) != 0:
K -= (A-1) * (B+1) - (A-1)
else:
K -= (A-1) * (B+1)
s = list(s)
s[-K-1] = 'A'
print(*s,sep = "")
break
'📚알고리즘 > 백준' 카테고리의 다른 글
[백준 9465번] 스티커 (C++) (0) | 2023.05.31 |
---|---|
[백준 1629번] 곱셈 (Python/파이썬) (0) | 2023.05.28 |
[백준 1238번] 파티 (Python/파이썬) (0) | 2023.05.27 |
[백준 2138번] 전구와 스위치 (Python/파이썬) (0) | 2023.05.26 |
[백준 1722번] 순열의 순서 (Python/파이썬) (0) | 2023.05.25 |