https://swexpertacademy.com/main/code/problem/problemDetail.do

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com


접근 방법

이중 반복문을 사용하여 두 수를 곱하고 함수 동작 전 최댓값과 비교하여 가지치기 했다.

곱한 값을 문자열로 변환해서 수의 단위, 각 자리의 숫자 등을 쉽게 알 수 있었다.

한 자리 수는 증가하는 수로 인정하지 않기에 예외 처리해 주어야 한다.

 

소스 코드

import java.util.*;
import java.io.*;
 
class Solution {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int T = Integer.parseInt(br.readLine());
        for(int t=1; t<=T; t++) {
        int N = Integer.parseInt(br.readLine());
        int[] n = new int[N];
         
        StringTokenizer st = new StringTokenizer(br.readLine(), " ");
        for(int i=0; i<N; i++) {
            n[i] = Integer.parseInt(st.nextToken());
        }
         
        int max = 0;
        for(int i=0; i<N; i++) {
            for(int j=i+1; j<N; j++) {
                int tmp = n[i]*n[j];
                if (max < tmp && ck_str(String.valueOf(tmp)))
                        max = tmp;
            }
        }
         
        StringBuilder sb = new StringBuilder();
        sb.append("#" + t + " " + (max == 0 ? -1 : max));
        System.out.println(sb.toString());
         
        }
    }
    static boolean ck_str(String str) {
        if(str.length() == 1)
            return false;
        for(int k=1; k<=str.length()-1; k++) {
            if(str.charAt(k-1)-'0' > str.charAt(k)-'0') {
                return false;
            }
        }
        return true;
    }
}

'코테 > 자바' 카테고리의 다른 글

[SWEA] 13428. 숫자 조작  (0) 2023.05.21
[SWEA] 6808. 규영이와 인영이의 카드게임  (2) 2023.05.21
[SWEA] 1225. 암호생성  (0) 2023.05.21
[SWEA] 4698. 테네스의 특별한 소수  (0) 2023.05.18
[BOJ] 11725. 트리의 부모 찾기  (0) 2023.05.18