콘텐츠로 바로가기

now0930 일지

이런저런 생각

  • 홈
  • 비공개
  • 강좌
  • 잔여 작업 조회
  • 위치

프로그래머스 예산

정확성은 다 맞는데, 효율성이 떨어진다. 효율성 2번, 3번은 도대체 어떻게 할지 모르겠다. 또한 효율성 통과 기준이 너무 높다. 19ms는 충분히 빠르다. 반드시 이분 탐색으로 풀어야 효율성 테스트를 통과하는 듯 하다. 정확성은 좀 쉬운데, 효율성 테스트가 또 마의 영역이다.

이 문제에서 이분 탐색을 어떻게 활용해야되는지 모르겠다. 너무 많이 진행되어 엎을 수 없어 보완했다.


import java.util.Arrays;

public class Bugdet {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Solution sol = new Solution();
		int[] budgets = { 120, 110, 140, 150 };
		int M = 485;
		int answer = 0;
		answer = sol.solution(budgets, M);
		System.out.println("테스트: " + answer);

	}

}

class Solution {
	public int solution(int[] budgets, int M) {
		//배열을 오름차순 정렬.
		Arrays.sort(budgets);
		/*
		 * for (int i = 0; i < budgets.length; i++) System.out.println(budgets[i]);
		 */
		int t = budgets[budgets.length - 1];
		int k = 0;
		long answer = 0;
		int tempSum = M + 1;
		while (tempSum > M) {
			answer = t;
			tempSum = sum(budgets, k, t);
			k = Arrays.binarySearch(budgets, t);

			if (k < 0)
				k = -(k + 1);
			k = budgets.length - k;
			if (sum(budgets, k + 1, budgets[budgets.length - k - 1]) >=M)
				t = budgets[budgets.length - k - 1];
			else
				t = t - 1;

		} //while
		/*
		 * for (int i = 0; i < budgets.length; i++) { int tempSum = sum(budgets, k, t);
		 * if (tempSum <= M) { answer = t; break; } else { t = t - 1; k =
		 * Arrays.binarySearch(budgets, t); if (k < 0) k = -(k + 1); k = budgets.length
		 * - k; } answer = t; }
		 */
		return (int)answer;
	}

	public int sum(int[] budgets, int k, int t) {
		int tempSum = 0;
		for (int i = 0; i < budgets.length - k; i++) {
			tempSum = tempSum + budgets[i];
		}
		//		for (int j = 0; j < k; j++)
		//			tempSum = tempSum + t;

		tempSum = tempSum + k * t;
		return tempSum;

	}

}

이 글 공유하기:

  • Tweet
발행일 2019-06-16글쓴이 이대원
카테고리 생활코딩 태그 java, programmers, 코딩, 테스트

댓글 남기기응답 취소

이 사이트는 Akismet을 사용하여 스팸을 줄입니다. 댓글 데이터가 어떻게 처리되는지 알아보세요.

글 내비게이션

이전 글

프로그래머스 2xn 타일링

다음 글

ubuntu 18.04 optimus 설정

2025 6월
일 월 화 수 목 금 토
1234567
891011121314
15161718192021
22232425262728
2930  
5월    

최신 글

  • 자기 회로 정리 2025-06-22
  • common mode, differential mode 2025-05-11
  • signal conditioner, 신호 처리기 2025-05-10
  • strain gage 2025-05-09
  • 칼만 필터 2025-05-01

카테고리

  • 산업계측제어기술사
  • 삶 자국
    • 책과 영화
    • 투자
  • 생활코딩
    • LEGO
    • ROS
    • tensorflow
  • 전기기사
  • 피아노 악보

메타

  • 로그인
  • 엔트리 피드
  • 댓글 피드
  • WordPress.org

페이지

  • 소개
  • 잔여 작업 조회
    • 작업 추가
    • 작업의 사진 조회
    • 작업 수정 페이지
  • 사진
    • GPS 입력된 사진
    • 사진 조회
  • 위치
    • 하기 휴가 방문지
    • 해외 출장

태그

android bash c docker driver FSM gps java kernel LEGO linux mysql network program opcua open62541 plc programmers python raspberry reinforcementLearning ros state space system program tensorflow transfer function 경제 미국 민수 삼국지 세계사 실기 에너지 역사 유전자 일본 임베디드 리눅스 전기기사 조선 중국 채윤 코딩 테스트 통계 한국사 한국어

팔로우하세요

  • Facebook
now0930 일지
WordPress로 제작.