(Java) 프로그래머스 - 최고의 집합

2022. 10. 4. 17:11·코딩 테스트

입력값이 매우 클수도 있기 때문에 효율성 맞추기가 어렵겠다라는 생각이 들었다.

처음에는 재귀를 이용해서 조합을 만드려고 했는데 100% 효율성 테스트에서 걸린다고 생각해서

최대한 간단한 로직으로 풀기위해 고민했다.

조금 생각해보니 금방 로직이 보여서 성공했다.

 

로직

answer 배열의 크기를 n으로 초기화 한다.

for문을 돌면서 answer 배열의 값을 찾는데

s를 cnt로 나눈 temp의 값이 배열의 첫번째 값이다. 

만약 temp가 0이면 모든 원소의 곱은 0이 되기 때문에 바로 배열에 -1를 넣고 반환한다.

temp의 값이 0이 아니면 s에서 temp값을 빼주고 cnt를 줄인다.

이렇게 n번 반복하게 되면 최고의 집합을 찾을수 있다.


최종 코드

import java.util.*;
class Solution {
    public int[] solution(int n, int s) {
        
        // 배열의 크기 n으로 초기화
        int[] answer = new int[n];
        
        int cnt = n;
        for (int i = 0; i < n; i++) {
            int temp = s / cnt;
            // 0이 하나라도 있으면 모든 원소의 곱은 0
            if(temp == 0) {
                answer = new int[]{-1};
                return answer;
            }
            answer[i] = temp;
            s -= temp;
            cnt--;
        }
        return answer;
    }
}

 

저작자표시 (새창열림)

'코딩 테스트' 카테고리의 다른 글

(Java) 프로그래머스 - 네트워크  (0) 2022.10.06
(Java) 프로그래머스 - 야근 지수  (0) 2022.10.05
(Java) 프로그래머스 - 이중우선순위큐  (0) 2022.09.30
(Java) 프로그래머스 - 정수 삼각형  (0) 2022.09.29
(Java) 프로그래머스 - 교점에 별 만들기  (0) 2022.09.28
'코딩 테스트' 카테고리의 다른 글
  • (Java) 프로그래머스 - 네트워크
  • (Java) 프로그래머스 - 야근 지수
  • (Java) 프로그래머스 - 이중우선순위큐
  • (Java) 프로그래머스 - 정수 삼각형
로승리
로승리
  • 로승리
    Roy's Blog
    로승리
  • 전체
    오늘
    어제
    • 분류 전체보기
      • Issuefy
      • Language
      • Spring
      • Database
      • Network
      • Kubernetes
      • AWS
      • 코드스쿼드
      • 코딩 테스트
      • 생각정리
      • 국비지원
      • 회고
      • 컨퍼런스, 세미나
  • 블로그 메뉴

    • 홈
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
로승리
(Java) 프로그래머스 - 최고의 집합
상단으로

티스토리툴바