만드는 중입니다

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

비밀번호 생성기

면접 대비

시간 제한2초메모리 제한512 MB

요약
길이 n인 문자열을 만들어 대문자, 소문자, 숫자의 최소 개수를 채우고 같은 문자가 연속으로 오지 않게 한다.
난이도

보통10점 중 4점

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

문제

여러 차례 기밀 정보가 유출된 뒤로 사람들은 어떤 비밀번호를 써야 하는지 진지하게 고민하게 되었다. 예를 들어 <<11111>> 같은 비밀번호는 너무 단순해서 쓰면 안 된다. 그런데 좋은 비밀번호인지 어떻게 판단할까?

비즈니스 프로세스 표준화 재단은 연구를 진행해 좋은 비밀번호는 충분히 길고 여러 종류의 문자를 포함해야 한다는 사실을 밝혀냈다. 연구에 따르면 좋은 비밀번호는 정확히 nn개의 문자로 이루어져야 한다. 비밀번호는 라틴 알파벳의 대문자, 소문자, 숫자로 구성되며 다음 조건을 만족해야 한다:

  • 비밀번호에 대문자가 적어도 aa개 있어야 한다;
  • 비밀번호에 소문자가 적어도 bb개 있어야 한다;
  • 비밀번호에 숫자가 적어도 cc개 있어야 한다;
  • 비밀번호에 같은 문자가 연속해서 두 번 나오면 안 된다.

재단의 직원들은 사용자가 이 모든 조건을 만족하는 비밀번호를 만드는 일을 부담스러워할 것이라고 생각하고, 사용자를 돕는 프로그램을 작성하기로 했다.

재단을 도와 주어진 조건에 맞는 비밀번호를 생성하는 프로그램을 작성하라.

입력

첫째 줄에 비밀번호의 길이 nn이 정수로 주어진다 (1≤n≤1001 \le n \le 100). 둘째 줄에 대문자, 소문자, 숫자의 최소 개수 aa, bb, cc가 음이 아닌 정수로 주어진다 (a+b+c≤na + b + c \le n).

출력

한 줄에 조건을 만족하는 비밀번호를 아무거나 하나 출력한다. 대문자, 소문자 라틴 문자와 숫자만 사용할 수 있다.

예제1

  1. 예제 1

    입력
    8
    2 5 1
    
    예상 출력
    PasSw0rd