Softeer 7353번 나무 심기 Java

: ) YOUNG·2024년 3월 27일
1

알고리즘

목록 보기
340/411
post-thumbnail

Softeer 7353번
https://softeer.ai/practice/7353

문제



생각하기


✔️ 매우 간단한 문제이다 (정렬)



동작

가장 큰 값을 만들어내면 된다.

처음에 그냥 첫번째 곱하기 arr[1] ~ arr[n] 했는데 틀렸다.

이유는 문제에서 음수가 있다고 그랬는데 내가 그걸 고려하지 않았다.

그래서 푸는 방법은

오름차순 정렬하면 제일 앞에는 음수가 있을 경우에는 음수가 오겠지?

-5, -4 ... 있다고 하면 곱은 20이 됨

근데 제일 뒤에 가장 큰수 2, 3 이라고 하면 6이 된다.

이럴 경우를 생각해야함



결과


코드



import java.io.*;
import java.util.*;

public class Main {

    // input
    private static BufferedReader br;

    // variables
    private static int N;
    private static int[] arr;

    public static void main(String[] args) throws IOException {
            br = new BufferedReader(new InputStreamReader(System.in));
            BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

            input();
 
            bw.write(solve());
            bw.close();
    } // End of main()

    private static String solve() {
        StringBuilder sb = new StringBuilder();

        Arrays.sort(arr);
        int ans = Math.max(arr[0] * arr[1], arr[N-1] * arr[N-2]);

        sb.append(ans);
        return sb.toString();
    } // End of solve()

    private static void input() throws IOException {
        N = Integer.parseInt(br.readLine());
        arr = new int[N];

        StringTokenizer st = new StringTokenizer(br.readLine());
        for(int i=0; i<N; i++) {
            arr[i] = Integer.parseInt(st.nextToken());
        }
    } // End of input()
} // End of Main class

0개의 댓글