서로 다른 정수 최대 1000개가 주어질 때, 곱의 십진수 자리가 123처럼 연속해 증가하는 두 수의 곱 중 최댓값을 구하고, 그런 쌍이 없으면 -1을 출력한다.
보통4구현완전 탐색수학정렬면접 대비아직 제출이 없습니다시간 제한2초메모리 제한512 MB도쿄에 있는 게임 회사에서 엔지니어로 일하고 있다. 이 회사는 해마다 여름에 전 직원이 참가하는 행사를 연다. 올해 행사는 도쿄에서 열리고, 나는 운영진으로 참가한다. 맡은 일은 참가자 전원이 동시에 즐기는 레크리에이션 게임을 기획하는 것이다.
여러 안을 검토한 끝에 규칙을 다음과 같이 정했다.
나눠 준 정수에 대해서는 짝을 이루기 위한 조건이 하나 더 있다.
두 정수의 곱을 문자열로 보았을 때 숫자가 왼쪽에서 오른쪽으로 1씩 커지면서 이어져야 한다. 예를 들어 2, 23, 56789는 이 조건을 만족하지만 21, 334, 135, 89012는 만족하지 않는다.
규칙을 이렇게 정하고 나니 상황에 따라 곱이 같은 우승 짝이 여럿 나올 수도 있다는 점을 알았다. 그래도 정수 집합이 주어지면 두 정수의 곱 중 가장 큰 값이 얼마인지는 구할 수 있다.
참가자에게 나눠 줄 서로 다른 정수의 집합이 주어질 때, 위 규칙을 만족하는 두 정수의 곱 중 가장 큰 값을 구하라.
입력은 테스트 케이스 하나로 이루어지며 형식은 다음과 같다.
N
a1 a2 ... aN
첫째 줄에는 게임 참가자 수를 나타내는 양의 정수 N이 주어진다. N은 1 이상 1000 이하의 정수이다. 둘째 줄에는 참가자에게 나눠 준 수를 나타내는 양의 정수 N개가 주어진다. i=1,2,…,N−1에 대해 ai와 ai+1 사이에는 공백이 하나 있다. 모든 i에 대해 1≤ai≤10000이고, i=j이면 ai=aj이다.
짝을 이루는 조건을 만족하는 두 정수의 곱 중 가장 큰 값을 출력한다. 짝을 이룰 수 있는 두 참가자가 없으면 −1을 출력한다.