[SWEA] 6190 정곤이의 단조 증가하는 수 (Java)

오태호·2023년 12월 10일
0

SWEA

목록 보기
7/7
post-thumbnail

1.  문제 링크

https://swexpertacademy.com/main/code/problem/problemDetail.do?problemLevel=3&contestProbId=AWcPjEuKAFgDFAU4&categoryId=AWcPjEuKAFgDFAU4&categoryType=CODE&problemTitle=&orderBy=SUBMIT_COUNT&selectCodeLang=ALL&select-1=3&pageSize=10&pageIndex=1

2.  소스코드

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

public class Solution {
    static StringBuilder answer = new StringBuilder();
    static Reader scanner = new Reader();

    static int numCount;
    static int[] nums;

    static void input() {
        numCount = scanner.nextInt();
        nums = new int[numCount];
        for (int idx = 0; idx < numCount; idx++) {
            nums[idx] = scanner.nextInt();
        }
    }

    static void solution() {
        int max = -1;
        for (int idx = 0; idx < numCount - 1; idx++) {
            for (int idx2 = idx + 1; idx2 < numCount; idx2++) {
                int multipliedNumber = nums[idx] * nums[idx2];
                if (isAscendingNumber(multipliedNumber)) {
                    max = Math.max(max, multipliedNumber);
                }
            }
        }

        answer.append(max).append('\n');
    }

    static boolean isAscendingNumber(int number) {
        String num = String.valueOf(number);
        for (int idx = 1; idx < num.length(); idx++) {
            if (num.charAt(idx - 1) > num.charAt(idx)) {
                return false;
            }
        }

        return true;
    }

    public static void main(String[] args) {
        int T = scanner.nextInt();
        for (int test = 1; test <= T; test++) {
            answer.append('#').append(test).append(' ');
            input();
            solution();
        }
        System.out.print(answer);
    }

    static class Reader {
        BufferedReader br;
        StringTokenizer st;

        public Reader() {
            br = new BufferedReader(new InputStreamReader(System.in));
        }

        String next() {
            while (st == null || !st.hasMoreElements()) {
                try {
                    st = new StringTokenizer(br.readLine());
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }

            return st.nextToken();
        }

        int nextInt() {
            return Integer.parseInt(next());
        }
    }
}

3.  접근

  • 주어진 정수들을 두 수씩 묶어서 곱한다.
  • 두 수를 곱해서 나온 결과값이 단조 증가하는 수인지 체크한다.
    • 왼쪽 자리수부터 인덱스 0이라고 했을 때, 인덱스 1부터 시작하여 바로 전 인덱스와 수를 비교한다.
    • 만약 한 번이라도 현재 인덱스 수가 이전 인덱스 수보다 작은 경우가 존재한다면 이는 단조 증가하는 수가 아니다.
  • 단조 증가하는 수라면 단조 증가하는 수의 최댓값을 갱신한다.
profile
자바, 웹 개발을 열심히 공부하고 있습니다!

0개의 댓글