← 실전 문제

가장 작은 짝수 재배열

C++빈칸 채우기

숫자 문자열의 모든 자리를 한 번씩 사용해 정수를 만들어요. 자리 순서는 바꿀 수 있지만 둘 이상의 자리일 때 첫 자리는 0일 수 없어요. 만들어진 수는 짝수여야 해요.

int solution(string digits)가 가능한 가장 작은 짝수를 반환하도록 두 빈칸을 채워 주세요. 만들 수 없으면 -1이에요. 길이가 1인 "0"은 정수 0으로 인정해요.

길이는 17이며 문자는 09예요. 숫자가 중복되거나 전부 0일 수 있어요. 빈 문자열은 없어요. 반환형은 int이고 유효한 값은 0~9,999,999예요.

예시 1: digits = "102" → 102. 012는 첫 자리 조건에 맞지 않고, 102가 유효한 가장 작은 짝수예요.

예시 2: digits = "3312" → 1332. 마지막 자리는 유일한 짝수 숫자 2이고 나머지 자리는 1·3·3 순서가 가장 작아요.

실행 입력은 숫자 문자열 한 개예요. main은 함수 호출 하네스이며 결과를 출력해요.

예시 입력

102

예상 결과

102

예시 입력

3312

예상 결과

1332
핵심 개념
  • brute-force: 입력 제한 안의 후보를 빠짐없이 비교해요.
  • number-theory-basic: 정수·나머지·거리의 계산을 구분해요.
  • stl-string: 원본 문자열의 인덱스와 문자 순서를 읽어요.

코드 작성과 채점은 로그인 후 이용해요

로그인하고 풀기