2024.06.02 ( Java )

changi123·2024년 6월 2일
0
post-thumbnail

1. 가장 큰 수 ( Programmers )

Sort ( https://school.programmers.co.kr/learn/courses/30/lessons/42746 )

풀이 ->
  • 못풀었는데 백준에서 정렬 공부 좀 더 하고 다시 풀어보자
package problem_solving.sort;

import java.util.Arrays;
import java.util.Collections;
import java.util.LinkedList;
import java.util.Queue;

import data_structure.basic_7.Linked_list;

public class Programmers_42746 {

	public static void main(String[] args) {
		int [] numbers = {979, 97, 978, 81, 818, 817};
		System.out.println(solution(numbers));
	}
	public static String solution(int[] numbers) {
		String answer = "";
		String [] arr = new String [numbers.length];

		for(int i= 0 ; i < arr.length;i++) {
			arr[i] = Integer.toString(numbers[i]);
		}


		Arrays.sort(arr, (a1,a2) -> {
			int len = Integer.compare(a1.length(), a2.length());
		
			if( len == 0) {
				return a1.compareTo(a2);
			}else if( len > 0 ){
				return a2.length();
			} else  {
				return a1.length();
			}
		});
		


		Queue<Integer> q = new LinkedList<Integer>();

		for(String s : arr) {
			q.offer(Integer.parseInt(s));

		}
		StringBuilder sb = new StringBuilder();
		while(!q.isEmpty()) {
			if( q.size() == 1) {
				sb.append(q.poll());
				break;
			}
			StringBuilder sb1 = new StringBuilder();
			sb1.append(q.poll());
			StringBuilder sb2 = new StringBuilder();
			sb2.append(q.poll());

			StringBuilder sb3 = new StringBuilder(sb1.toString());

			StringBuilder compare1 =sb1.append(sb2);
			StringBuilder compare2 =sb2.append(sb3);
			if ( Integer.parseInt(compare1.toString()) > Integer.parseInt(compare2.toString()) ){
				sb.append(compare1);
			} else {
				sb.append(compare2);
			}
		}

		// System.out.println(sb.toString());
		return sb.toString();

	}
}

2. 초콜릿 식사 ( BaekJoon )

Greedy (https://www.acmicpc.net/problem/2885 )

풀이 -> https://github.com/changi123/Algorithm-And-Data_structure/blob/main/Algorithm/src/problem_solving/greedy/BaekJoon_2599.java
package problem_solving.greedy;

import java.util.Scanner;

public class BaekJoon_2599 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int k = Integer.parseInt(sc.next());
		int cnt = 0 ;
		int num = 1 ;
		while(num<k) {
			num *= 2;
		}
		
		int [] arr = new int[2];
		arr[0] = num ;
		
		while(k> 0 ) {
			if( k >= num ) {
				k-=num;
			}else {
				num /= 2;
				cnt++;
			}
		}
		
		arr[1] = cnt;
		
		for(int i= 0 ; i <arr.length;i++) {
			System.out.print(arr[i]+ " ");
		}
		
	}

}

백준 레벨 변동

  • Gold 5 33% -> Gold 5 36%

풀이 유형

Greedy - 1문제

profile
개발자 홍찬기 꾸준한 사람이 되자

0개의 댓글

관련 채용 정보