만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

팰린드롬 이름

면접 대비

시간 제한1초메모리 제한1024 MB

요약
길이가 N이고 서로 다른 소문자 K개를 정확히 사용하는 문자열 중 서로 다른 회문 부분문자열이 가장 많은 문자열을 찾는 문제입니다.
난이도

보통10점 중 4점

유형
그리디, 수학, 구현
정답자
아직 제출이 없습니다

문제

팰린드롬의 마법사 엣지는 오늘도 팰린드롬을 찾고 있었다. 그러던 도중 팰린드롬을 좋아하는 사람들이 모이는 축제를 만들고 싶어졌다. 축제 이름의 길이는 NN이고, 이름은 서로 다른 영어 알파벳 소문자 KK가지로 이루어져 있어야 한다. 마법사 엣지는 이름의 조건을 만족하면서, 서로 다른 부분 문자열 중 팰린드롬의 개수가 가장 많은 문자열을 축제의 이름으로 정한다. 문제에 사용된 단어의 의미는 아래 힌트를 참고하자.

입력

첫째 줄에 이름의 길이 NN과 알파벳 소문자의 개수 KK가 공백으로 구분되어 입력된다. (1≤N≤100 000,1≤K≤26,K≤N)(1 \le N \le 100\,000, 1 \le K \le 26, K \le N)

출력

첫째 줄에 마법사 엣지가 정할 축제의 이름을 출력한다.

힌트

팰린드롬은 앞으로 읽으나 뒤로 읽으나 똑같은 문자열이다. 예를 들어 level은 팰린드롬이지만, apple은 아니다.

부분 문자열이란 문자열에서 연속한 문자 몇 개를 이어 붙인 문자열이다. 예를 들어 aba의 부분 문자열은 a, b, a, ab, ba, aba가 있다.

두 부분 문자열 AA, BB가 서로 다르다는 것은 길이가 다르거나, AA의 ii번째 글자와 BB의 ii번째 글자가 다르게 하는 ii가 존재함을 뜻한다. 서로 다른 부분 문자열이란 부분 문자열 중 서로 다른 것들이다. 예를 들어 aba의 서로 다른 부분 문자열은 a, b, ab, ba, aba이다.

사전순은 사전에 쓰이는 문자열의 배열 순서를 말한다. 예를 들어 abc는 acb보다 사전순으로 앞서고, aa는 aaa보다 사전순으로 앞선다.

예제3

  1. 예제 1

    입력
    1 1
    
    예상 출력
    a
    
  2. 예제 2

    입력
    2 1
    
    예상 출력
    aa
    
  3. 예제 3

    입력
    2 2
    
    예상 출력
    ab