[Java] 백준 1500 (최대곱)

2024. 4. 3. 23:16·BOJ, Programmers

https://www.acmicpc.net/problem/1500

 

1500번: 최대 곱

세준이는 정수 S와 K가 주어졌을 때, 합이 S인 K개의 양의 정수를 찾으려고 한다. 만약 여러개일 경우 그 곱을 가능한 최대로 하려고 한다. 가능한 최대의 곱을 출력한다. 만약 S=10, K=3이면, 3,3,4는

www.acmicpc.net

 

수학 문제 알고리즘이다. 

정수 S가 주어졌을 때 갯수가 K개이고 합이 S인 양의 정수를 구해야 한다.

 

중요 로직을 말하자면 

먼저 1의 갯수가 적어야 곱이 최대로 크므로 

중간값을 많이 구해야 한다고 생각했다.

 

중요 로직 코드를 설명하겠다.

 while (true){
      if(s <= 0){
           break;
        }
      int a = s / k;
      list.add(a);
      s = s - a;
      k--;
            
} // while

먼저 s가 0 이하면 while 루프를 빠져나오는 조건문을 만들어줬다.

s를 k로 나눈 값을 구하고 a에 저장하고 list에 추가한다.

그리고 s를 나눈 값 a를 빼고 ( 하나의 정수를 구했으니 전체 값(s)에서 뺏다. )

갯수 (k) 를 하나 줄여준다.

 

 

아래는 전체 코드이다.

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;
public class Main {
    public static void main(String[] args) throws IOException {

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());

        int s = Integer.parseInt(st.nextToken());
        int k = Integer.parseInt(st.nextToken());

        if(s==k){
            System.out.println("1");
            return;
        }
        
        int max = 0;
        List<Integer> list = new ArrayList<>();
        
        while (true){
            if(s <= 0){
                break;
            }
            int a = s / k;
            list.add(a);
            s = s - a;
            k--;

        } // while

        long sum = 1;
        for (int i = 0; i < list.size(); i++) {
            sum *= list.get(i);

        }
        System.out.println(sum);
    }
}

'BOJ, Programmers' 카테고리의 다른 글

[Java] 백준 2822 (점수 계산)  (0) 2024.04.05
[JAVA] 백준 1041 (주사위)  (0) 2024.04.05
[Java] 백준 1010번 (다리놓기)  (0) 2024.03.30
[Java] 백준 1012번 (유기농 배추)  (0) 2024.03.30
[Java] 백준 1049 (좋은 구간)  (1) 2024.03.30
'BOJ, Programmers' 카테고리의 다른 글
  • [Java] 백준 2822 (점수 계산)
  • [JAVA] 백준 1041 (주사위)
  • [Java] 백준 1010번 (다리놓기)
  • [Java] 백준 1012번 (유기농 배추)
Economy98
Economy98
공부하고 기록하기
  • Economy98
    Economy_Dev
    Economy98
  • 전체
    오늘
    어제
    • 분류 전체보기 (74)
      • Spring Framework (11)
      • BOJ, Programmers (22)
      • Java (4)
      • JDBC (6)
      • JPA (9)
      • Spring Transaction (3)
      • Algorithm (1)
      • Web (5)
      • Projects (2)
        • 쇼핑몰 프로젝트 (0)
        • 열람실 & 도서관 프로젝트 (2)
      • Network (2)
      • 나의 공부방 (5)
      • 끄적끄적 (1)
      • Error Log (3)
      • CS (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • Github
  • 링크

    • Github
  • 공지사항

  • 인기 글

  • 태그

    스프링부트
    자바
    다이나믹 프로그래밍
    백준 자바 풀이
    그리디 알고리즘
    백준 풀이
    java
    자바 문제
    백준
    트랜잭션
    JPA
    예외 처리
    propagation
    정렬
    restful api
    브루트포스 알고리즘
    스프링
    자바 문제 풀이
    jdbc
    Spring
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
Economy98
[Java] 백준 1500 (최대곱)
상단으로

티스토리툴바