๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Programming/Algorithm

[Java] Softeer Level 2- "GPT์‹ ์ˆซ์ž ๋น„๊ต" ์ž๋ฐ” ํ’€์ด

728x90
๋ฐ˜์‘ํ˜•

๋ฌธ์ œ

์–ผ๋งˆ ์ „ GPT์˜ ์‹ค์ˆ˜ ๋น„๊ต ๋ฐฉ์‹์ด ํ™”์ œ๊ฐ€ ๋œ ์ ์ด ์žˆ์—ˆ๋‹ค.

์งˆ๋ฌธ) "3.9์™€ 3.11 ์ค‘์— ๋ญ๊ฐ€ ๋” ์ปค?" / ๋‹ต๋ณ€) "3.11์ด ๋” ํฝ๋‹ˆ๋‹ค."

์ˆ˜ํ•™ ์‹œ๊ฐ„์— ์กธ์ง€ ์•Š์€ ์‚ฌ๋žŒ๋“ค์€ ๊ฐ€ ๋ณด๋‹ค ํฌ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ, GPT์˜ ๋ˆˆ์œผ๋กœ ๋ณด๋ฉด Python 3.9์™€ Python 3.11 ์ค‘ ํ›„์ž๋ฅผ ๋” ํฌ๊ฒŒ ๋ณด๋Š” ํ•™์Šต ๋ฐ์ดํ„ฐ๊ฐ€ ๋งŽ์•„ ์ €๋ ‡๊ฒŒ ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๋‹ค. GPT์˜ ์„ธ์ƒ์—์„œ 3.1์€ 3๋ณด๋‹ค ํฌ๊ณ , ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ 3.9๋Š” 3.2๋ณด๋‹ค ํฌ์ง€๋งŒ, 3.10์€ 3.2๋ณด๋‹ค ํฐ ๊ฐ’์œผ๋กœ ์ฒ˜๋ฆฌ๋œ๋‹ค.

๊ตฌ์ฒด์ ์œผ๋กœ, ์†Œ์ˆ˜์ ์„ ๊ธฐ์ค€์œผ๋กœ ์™ผ์ชฝ์„ ์ˆ˜๋กœ ์ฝ์€ ๊ฐ’์„ , ์˜ค๋ฅธ์ชฝ์„ ์ˆ˜๋กœ ์ฝ์€ ๊ฐ’์„ ๋ผ๊ณ  ํ•  ๋•Œ ๋‘ ์ˆ˜์˜ ๋น„๊ต๊ฐ€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ด๋ฃจ์–ด์ง„๋‹ค:

  1. ๊ฐ’์ด ๋” ์ž‘์œผ๋ฉด ๋” ์ž‘์€ ์ˆ˜์ด๋‹ค.
  2. ๊ฐ’์ด ๊ฐ™์„ ๊ฒฝ์šฐ ๊ฐ’์ด ๋” ์ž‘์œผ๋ฉด ๋” ์ž‘์€ ์ˆ˜์ด๋‹ค.
  3. ์†Œ์ˆ˜์ ์ด ์—†๋Š” ๊ฒฝ์šฐ๋Š” ๊ฐ™์€ ์ˆ˜์˜ ์†Œ์ˆ˜์ ์ด ์žˆ๋Š” ๊ฒฝ์šฐ๋ณด๋‹ค ํ•ญ์ƒ ์ž‘๊ฒŒ ์ทจ๊ธ‰๋œ๋‹ค. (๋‹ค์‹œ ๋งํ•ด, GPT์—๊ฒŒ 3์€ 3.0๋ณด๋‹ค ์ž‘๋‹ค.)

๊ฐœ์˜ ์ˆ˜๋“ค์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, ์ด๋ฅผ GPT์˜ ๊ธฐ์ค€์— ๋”ฐ๋ผ ๋น„๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•ด๋ณด์ž.

์ œ์•ฝ์กฐ๊ฑด

[๋ฌธ์ œ ์ œ์•ฝ ์กฐ๊ฑด]

[์กฐ๊ฑด 1] ์€  ์ด์ƒ  ์ดํ•˜์ด๋‹ค.

[์กฐ๊ฑด 2] ๊ฐ ์ˆ˜๋Š” ์‹ค์ˆ˜ ํ˜น์€ ์ •์ˆ˜๋กœ ํ‘œํ˜„๋˜๊ณ ,  ์ด์ƒ  ์ดํ•˜์ด๋ฉฐ, ์†Œ์ˆ˜์ ์ด ์—†๊ฑฐ๋‚˜ ์†Œ์ˆ˜์  ์•„๋ž˜ ์ตœ๋Œ€ 3์ž๋ฆฌ๊นŒ์ง€ ์ฃผ์–ด์ง„๋‹ค.

 

[์„œ๋ธŒ ํƒœ์Šคํฌ๋ณ„ ์ œ์•ฝ ์กฐ๊ฑด]

๋ณ„๋„์˜ ์„œ๋ธŒ ํƒœ์Šคํฌ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ž…๋ ฅํ˜•์‹

์ฒซ ๋ฒˆ์งธ ์ค„์— ์ด ์ฃผ์–ด์ง„๋‹ค.

๋‘ ๋ฒˆ์งธ ์ค„๋ถ€ํ„ฐ ๊ฐœ์˜ ์ค„์— ๊ฑธ์ณ, ๊ฐ ์ˆ˜๊ฐ€ ํ•œ ์ค„์— ํ•˜๋‚˜์”ฉ ์ฃผ์–ด์ง„๋‹ค.

01.23, 3.001๊ณผ ๊ฐ™์ด ์†Œ์ˆ˜์ ์„ ๊ธฐ์ค€์œผ๋กœ ๊ฐ ํŒŒํŠธ์˜ ์ด ์•„๋‹Œ ์ˆ˜ ์ด์ „์— leading zero๊ฐ€ ๋‚˜์˜ค๋Š” ๊ฒฝ์šฐ๋Š” ์ฃผ์–ด์ง€์ง€ ์•Š๋Š”๋‹ค.

์ถ”๊ฐ€๋กœ, 3.00, 3.000, ๋˜๋Š” 00.1๊ณผ ๊ฐ™์ด ์†Œ์ˆ˜์ ์„ ๊ธฐ์ค€์œผ๋กœ ํ•œ ํŒŒํŠธ์— ๋‘ ๊ฐœ ์ด์ƒ์˜ 0๋งŒ ์ฃผ์–ด์ง€๋Š” ์ž…๋ ฅ์€ ์—†๋‹ค.

์ถœ๋ ฅํ˜•์‹

์ฒซ ๋ฒˆ์งธ ์ค„๋ถ€ํ„ฐ ๊ฐœ์˜ ์ค„์— ๊ฑธ์ณ, ์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์ง„ ์ˆ˜๋“ค์„ GPT์˜ ๊ธฐ์ค€์œผ๋กœ ๋น„๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•œ ์ˆœ์„œ๋Œ€๋กœ ํ•œ ์ค„์— ํ•˜๋‚˜์”ฉ ์ถœ๋ ฅํ•œ๋‹ค.

์˜ˆ์ œ

์ž…๋ ฅ์˜ˆ์ œ1

5 1.2 1.11 2.9 4.2 3

์ถœ๋ ฅ์˜ˆ์ œ1

1.2 1.11 2.9 3 4.2

1.2์™€ 1.11์˜ ์ˆœ์„œ์— ์œ ์˜ํ•ด ์ถœ๋ ฅํ•˜๋ฉด ๋œ๋‹ค.

์ž…๋ ฅ์˜ˆ์ œ2

8 1 1.0 2.0 2.10 2.1 2.100 1.11 1.3

์ถœ๋ ฅ์˜ˆ์ œ2

1 1.0 1.3 1.11 2.0 2.1 2.10 2.100

ํ’€์ด

์ ์ ˆํ•œ ๊ณ„์‚ฐ์„ ์ด์šฉํ•œ ๋ฐฐ์—ด์˜ ์ •๋ ฌ ๋ฌธ์ œ

์†Œ์ˆซ์ ์„ ๊ธฐ์ค€์œผ๋กœ ์•ž์ž๋ฆฌ ์ •์ˆ˜์™€ ๋’ท์ž๋ฆฌ ์ •์ˆ˜๋ฅผ ๋น„๊ตํ•œ๋‹ค.

์ž๋ฐ”์˜ ๋ฐฐ์—ด์—์„œ์˜ sortํ•จ์ˆ˜์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋Š” O(nlogn)์œผ๋กœ ์ž…๋ ฅ๊ฐ’ N์˜ ์ตœ๋Œ“๊ฐ’์ธ 1,000์ด ๋“ค์–ด์™€๋„ 1์ดˆ ์•ˆ์— ์ •๋ ฌ ๊ฐ€๋Šฅ

์ฝ”๋“œ

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

public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();
        ArrayList<String> arr = new ArrayList<>();
        
        // ์ž…๋ ฅ๊ฐ’ ๋ฐ›๊ธฐ
        int N = Integer.parseInt(br.readLine());
        for(int i=0; i < N; i++){
            arr.add(br.readLine());
        }
        
        // ๋žŒ๋‹คํ•จ์ˆ˜๋กœ ์ •๋ ฌ ์ •์˜
        Collections.sort(arr, (first, second) -> {
            String[] a1 = first.split("\\.");
            String[] a2 = second.split("\\.");
            
            // ์•ž์ž๋ฆฌ ์ •์ˆ˜๋น„๊ต
            int r1 = Integer.parseInt(a1[0]) - Integer.parseInt(a2[0]);
            
            // ์•ž์ž๋ฆฌ ์ •์ˆ˜๊ฐ€ ๊ฐ™์ง€ ์•Š๋‹ค๋ฉด, ๊ฒฐ๊ณผ ๋ฆฌํ„ดํ•˜์—ฌ ์ •๋ ฌ
            if(r1 != 0){
                return r1;
            }
            
            // ๋’ท์ž๋ฆฌ ์ •์ˆ˜๋น„๊ต
            // ์†Œ์ˆซ์ ์ด ์—†๋Š” ๊ฐ’๊ณผ ์†Œ์ˆซ์  ์ดํ›„ ๊ฐ’์ด 0์ธ ๊ฐ’์„ ๋น„๊ตํ•˜๊ธฐ ์œ„ํ•ด์„œ ์—†๋‹ค๋ฉด, -1์ฒ˜๋ฆฌ
            int n1 = a1.length < 2 ? -1 : Integer.parseInt(a1[1]);
            int n2 = a2.length < 2 ? -1 : Integer.parseInt(a2[1]);
            
            return n1 - n2;
        });

        // ์ถœ๋ ฅ๊ฐ’ ์„ธํŒ…
        for(String item : arr) {
            sb.append(item).append("\n");
        }
        
        System.out.println(sb.toString());
        
        br.close();
        
    }
}

 

728x90
๋ฐ˜์‘ํ˜•