SSAFY/SWEA

[SWEA] 6190 : 정곤이의 단조 증가하는 수

믕비 2023. 5. 1. 14:14

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWcPjEuKAFgDFAU4 

 

SW Expert Academy

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

swexpertacademy.com

내 코드

메모리 : 26616 KB

시간 : 600 ms

코드길이 : 1416 B

 

[내 코드]

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Solution {
	static int N;
	static int[] A;
	//10억 ~ 일
	static int[] size = {1000000000, 100000000, 10000000, 1000000, 100000, 10000, 1000, 100, 10, 1};
	static int result;

	public static void main(String[] args) throws IOException{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringBuilder sb = new StringBuilder();
		StringTokenizer st;
		
		int T = Integer.parseInt(br.readLine());
		for(int t = 1; t <= T; t++) {
			sb.append('#').append(t).append(' ');
			N = Integer.parseInt(br.readLine());
			A = new int[N];
			result = -1;
			
			st = new StringTokenizer(br.readLine());
			for(int n = 0; n < N; n++) {
				A[n] = Integer.parseInt(st.nextToken());
			}
			
			for(int i = 0; i < N; i++) {
				choiceTwo(i);
			}
			sb.append(result).append('\n');
		}
		System.out.print(sb);
	}
	//필수 선택 숫자가 A[index]
	public static void choiceTwo(int index) {
		for(int i = index + 1; i < N; i++) {
			int num = A[index]*A[i];
			if(isDanzo(num))
				result = Math.max(result, num);
		}
	}
	
	public static boolean isDanzo(int num) {
		for(int indexOfsize = 0; indexOfsize < 9; indexOfsize++) {
			if((num / size[indexOfsize]) > (num % size[indexOfsize]) / size[indexOfsize + 1])
				return false;
			num %= size[indexOfsize];
		}
		return true;
	}

}

 

가장빠른 실행시간과 2배 넘게 차이가 나서 그 코드 가지고 옴

[코드]

import java.io.*;
import java.util.*;
 
public class Solution {
    static int[] list;
    static int answer;
 
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        StringBuilder sb = new StringBuilder();
        StringTokenizer st;
 
        int T = Integer.parseInt(br.readLine());
        for (int test_case = 1; test_case <= T; test_case++) {
            int N = Integer.parseInt(br.readLine());
            list = new int[N];
            st = new StringTokenizer(br.readLine());
            for (int i = 0; i < N; i++)
                list[i] = Integer.parseInt(st.nextToken());
 
            answer = -1;
            solve();
            sb.append("#").append(test_case).append(" ").append(answer).append("\n");
        }
 
        bw.write(sb.toString());
        bw.close();
        br.close();
    }
 
    static void solve() {
        for (int i = 0; i < list.length - 1; i++) {
            for (int j = i + 1; j < list.length; j++) {
                int n = list[i] * list[j];
                if (answer < n) {
                    if (check(n))
                        answer = n;
                }
            }
        }
    }
 
    static boolean check(int n) {
        do {
            int t = n % 10;
            n /= 10;
            if (n % 10 > t)
                return false;
        } while (n != 0);
 
        return true;
    }
}

'SSAFY > SWEA' 카테고리의 다른 글

[SWEA] 5607 : 조합 (풀이중)  (0) 2023.05.02
[SWEA] 1873 : 상호의 배틀필드  (0) 2023.05.01
[SWEA] 2814 : 최장경로  (0) 2023.05.01
[SWEA] 2805 : 농작물 수확하기  (0) 2023.04.30
[SWEA] 5215 : 햄버거 다이어트  (0) 2023.04.30