• Home

My Codegate

  • Home

프로그래머스 가장 큰 수 자바 문제풀이

2023/12/12 Posted by Codegate Java No Comments
프로그래머스 가장 큰 수 자바 문제풀이

문제 링크

문제 내용은 int[] 배열 numbers를 받아서 가장 큰 값을 만든 뒤 String으로 반환해주면 되는데, 주의할 점은 배열이 0, 0 이런 식으로 들어왔다면 00이 아닌 0을 Return해야 한다

import java.util.Arrays;

public class LargestValue {

  // 숫자 배열을 받아서 큰 수 위주로 배치해서 가장 큰 값을 Return 해야 함
  // 34가 9보다 크지만 9앞에 와야 가장 큰 수이기 때문에 이걸 고려해야 함.. 근데 어떻게 ..
  // while로 무한루프 돌리되 첫째자리, 둘째자리.. 이런 식으로 넣어볼까?
  // 33 39 이렇게 비교하면 39가 와야 하는데 ..비교를 어떻게?
  public static String solution(int[] numbers) {
    String[] array = Arrays.stream(numbers).mapToObj(String::valueOf).toArray(String[]::new);
    Arrays.sort(array, (a, b) -> (b + a).compareTo(a + b));

    if (array[0].equals("0")) {
      return "0";
    }

    StringBuilder sb = new StringBuilder();
    Arrays.stream(array).forEach(sb::append);
    return sb.toString();
  }

  public static void main(String[] args) {
    int[] arr = {0, 0};
    System.out.println(solution(arr));
  }

}

문제를 풀어보자면 먼저 int[] 배열을 String[] 배열로 바꿔준 뒤, 값들을 합쳐봐서 가장 큰 값으로 정렬을 해 줘야 하는데 Arrays.sort(배열명, (a, b) -> (b + a).compareTo(a + b)); 을 사용해주면 크게 나오는 값으로 정렬해서 반환하게 되는데 Arrays.sort 메소드 자체가 여러 알고리즘 중 가장 효율적인 알고리즘을 사용하기 때문에, 무슨 정렬 알고리즘을 써야되나 이런 걱정은 하지 않아도 되고

문제와는 상관없지만 가장 큰 값 대신 작은 값을 찾으려면
Arrays.sort(배열명, (a, b) -> (b + a).compareTo(a + b)); 을
Arrays.sort(배열명, (a, b) -> (a + b).compareTo(b + a)); 으로 변경해주면 된다

이후 정렬을 마치고 나면 모든 배열이 0인 경우가 있으므로, 시작 인덱스가 0이라면 0 반환 후 끝내고, 그렇지 않다면 String 형태로 반환해야 하는데 String에 하나씩 붙이기에는 배열이 길면 많은 시간이 소모될 수 있기 때문에 StringBuilder를 사용해서 합쳐준 후 .toString() 으로 String으로 변경한 후 반환해주면 끝이다

No Comments
0

Leave a Reply Cancel Reply

Introduction

My Codegate

Latest Posts

  • Google Search Console API 연동방법
  • 인텔리제이 Gradle Dependency 최신 버전 보는 방법
  • Wallet-Tracker 개발일지
  • Moralis API 자바로 호출방법
  • IntelliJ Commit 후 Push 따로 하는 방법

Categories

  • My Project (4)
  • Java (42)
  • Algorithm (161)
    • Java (152)
    • Algorithm Knowledge (3)
    • Algorithm site usage (6)
  • Vue.js (1)
  • Spring (4)
  • Docker (2)
  • IntelliJ (20)
  • Uncategorized (7)

Recent Comments

  • Codegate on Hello world!
  • A WordPress Commenter on Hello world!

© 2025 — mycodegate.com

Prev Next