[2512] 예산, c++

2021. 2. 6. 23:50·DEV/PS

[2512] 예산

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

 

2512번: 예산

첫째 줄에는 지방의 수를 의미하는 정수 N이 주어진다. N은 3 이상 10,000 이하이다. 다음 줄에는 각 지방의 예산요청을 표현하는 N개의 정수가 빈칸을 사이에 두고 주어진다. 이 값들은 모두 1 이상

www.acmicpc.net

한줄 후기 : 내 예산은 마이너스

#include <iostream>
#include <algorithm>
using namespace std;
int arr[10000];
int n, m;
bool check(int x){
	int cnt=0;
	for(int i=0; i<n; i++){
		if(arr[i] > x){
			cnt+=x;
		}
		else{
			cnt+=arr[i];
		}
	}
	if(cnt <= m)	return true;
	else	return false;
}
int main(){
	int l,r,ans=0, x;
	scanf("%d", &n);
	for(int i=0; i<n; i++){
		scanf("%d", &arr[i]);
	}
	scanf("%d", &m);
	sort(arr,arr+n);
	l = 1;
	r = arr[n-1];
	while(l <= r){
		x = (l+r)/2;
		if(check(x)){
			l = x+1;
			ans = max(ans, x);
		}
		else{
			r = x-1;
		}
	}
	printf("%d", ans);
	return 0;
}

다른 이분 탐색 문제들 보다는 쉬웠던 것 같다. 예산 상한액을 정해놓고 넘지 않도록 상한액 보다 큰 예산은 무조건 상한액으로 줄이고, 그보다 작은 예산은 지원한다고 가정해서 가장 예산에 가깝도록 배정하는 금액을 찾아야 하는 문제이다. 이 문제는 딱 이분탐색 기준을 상한액으로 두면 될 것 같아서 쉬웠음.

left = 1, right 는 받은 예산의 가장 큰 값으로 두고 이분탐색을 한다. check 함수에서는 현재의 mid 값보다 큰 예산을 모두 mid 값으로 줄이고, 작은 예산은 그대로 둔 다음 합계를 계산하여 총 사용 가능 예산 보다 작으면 true, 크면 false 를 반환해 주면 된다.

나머지는 이분 탐색 하는 방식으로~

저작자표시 (새창열림)

'DEV > PS' 카테고리의 다른 글

[2217] 로프, c++  (0) 2021.02.06
[1018] 체스판 다시 칠하기, c++  (0) 2021.02.06
[2110] 공유기 설치, c++  (0) 2021.02.06
[2012] 등수 매기기, c++  (0) 2021.02.06
[17241] Pineapple Advertising, c++  (0) 2021.02.06
'DEV/PS' 카테고리의 다른 글
  • [2217] 로프, c++
  • [1018] 체스판 다시 칠하기, c++
  • [2110] 공유기 설치, c++
  • [2012] 등수 매기기, c++
jobchae
jobchae
말하는 감자지만, 코드를 끄적이는 Node.js 백엔드 개발자입니다.
  • jobchae
    JOBCHAE
    jobchae
  • 전체
    오늘
    어제
    • 🚀 JOBCHAE (182)
      • DEV (151)
        • PS (108)
        • Node.js (12)
        • React (3)
        • docker (1)
        • 잡다한 개발 일지 (21)
        • injection (1)
        • JS, TS (3)
        • DB (2)
      • 축구 (0)
      • 일상 (19)
      • 영화 (3)
      • 음악 (8)
  • 블로그 메뉴

    • 💻 Github
    • 🙋🏻 Linkedin
    • 📖 방명록
  • 링크

    • PS Github
  • 공지사항

  • 인기 글

  • 태그

    위상정렬
    SOPT
    db
    Nest.js
    알고리즘
    boj
    react
    PS
    이분탐색
    GitHub
    mongoDB
    DFS
    개발
    DP
    솝트
    BFS
    일상
    슬랙
    리액트
    우선순위큐
    슬랙봇
    백준
    JavaScript
    Express
    렛츠락페스티벌
    nodejs
    회고
    앱잼
    typescript
    node.js
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
jobchae
[2512] 예산, c++
상단으로

티스토리툴바