12970. AB_정말 중요한 문제

·2025년 10월 23일

백준 알고리즘

목록 보기
283/325
post-thumbnail

문제 해결 전략

  • 2개의 문자를 50 자리 수의 배치하는 경우는 2의 50승이므로 브루트포스 못함.

-> 다른 방법을 생각하자.

생각해보기1.

  • 해 구성하기 문제이다.

  • A와 B의 순열로 이루어진 상태에서 진행해야 하므로

a + b = n; 이라는 식으로 진행해야 한다.

생각해보기2.

  • 조건이 이러하기 때문에 bbbbbb 를 배치한 상태에서
    -> a가 앞에 오면 b는 6개이므로 6카운팅 된다.
    -> 또는 a가 맨 뒤에 오면 카운팅은 0이다..

  • 그러면 bbbbbb 이고, a 3개를 맨 앞에 배치하면
    -> aaabbbbbb 이므로 이 때는 a의 개수 * b의 개수이므로
    18개 이다.

  • => 최대값을 구했다. a * b 만큼이 카운팅이 최대이고,
    k 보다 작다면 진행할 수 없다.

생각해보기

: a를 어떻게 배치할까?

  • b를 먼저 배치한 상태에서 시작을 해야 카운팅 하기에 편하다.

  • 왜냐하면 b가 a보다 뒤에 있어야 카운팅을 하기 때문.

  • b를 전부 배치한 상태에서 진행하자.

  • a는 b 이곳 저곳에 위치할 수 있다.

정책

: 맨 처음에는 이렇게 만들고 생각해보았는데.
인덱스 수식에 대한 공식을 만들 수 없었다.

  • 그래서 인덱스 순서를 뒤집었다.

1) -> k가 b보다 작을 때의 상황이고,

2) k가 b보다 클 때는 이렇다.

코드 구현 어떻게 할까???

  • k가 13인 경우 이렇게 배열을 배치했고, 코드 구현 고민해야 했다.

코드

  • 1) 일단 배열 카운팅함.

  • 2) 마지막 배치하는 코드

profile
🔥🔥🔥

0개의 댓글