Hello Ocean! ๐ŸŒผ

[์•Œ๊ณ ๋ฆฌ์ฆ˜ ์Šคํ„ฐ๋””] ๋ฐฑ์ค€ #1461 ๋„์„œ๊ด€ ๋ณธ๋ฌธ

Algorithm

[์•Œ๊ณ ๋ฆฌ์ฆ˜ ์Šคํ„ฐ๋””] ๋ฐฑ์ค€ #1461 ๋„์„œ๊ด€

bba_dda 2020. 4. 23. 01:25
๋ฐ˜์‘ํ˜•

 

๋ฌธ์ œ 

๋„์„œ๊ด€ ์˜์—… ํ›„์— ์ฑ… ์ •๋ฆฌ๋ฅผ ํ•  ๊ฒƒ์ด๋‹ค. 

์žฌํ›ˆ์ด์˜ ํ˜„์žฌ ์œ„์น˜๋Š” 0์ด๊ณ , ๊ฐ ์ฑ…๋“ค์˜ ์œ„์น˜๋Š” ์ ˆ๋Œ“๊ฐ’์ด 10000์ดํ•˜์ธ ์ •์ˆ˜์ด๋ฉฐ, 0 ์œ„์น˜์— ์žˆ๋Š” ์ฑ…์€ ์—†๋‹ค.

ํ•œ ๋ฒˆ์— M๊ฐœ์˜ ์ฑ…์„ ์šด๋ฐ˜ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ•  ๋•Œ, ์ฑ…์„ ๋ชจ๋‘ ์ •๋ฆฌํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ ์ตœ์†Œ ๊ฑธ์ŒํšŸ์ˆ˜๋ฅผ ๊ตฌํ•ด๋ผ .

(๋งˆ์ง€๋ง‰ ์ฑ…์„ ์ •๋ฆฌํ•œ ํ›„์—๋Š” ๋‹ค์‹œ ์›์ ์œผ๋กœ ๋Œ์•„์˜ฌ ํ•„์š”๊ฐ€ ์—†๋‹ค.)

 

์ž…๋ ฅ

N : ์ฑ…์˜ ๊ฐœ์ˆ˜ (1<=N<=10000)

M : ํ•œ ๋ฒˆ์— ์šด๋ฐ˜ํ•  ์ˆ˜ ์žˆ๋Š” ์ฑ…์˜ ๊ฐœ์ˆ˜ (1<=M<=10000)

๊ฐ ์ฑ…์˜ ์œ„์น˜๊ฐ€ N๊ฐœ์˜ ์ˆซ์ž๋กœ ์ž…๋ ฅ๋œ๋‹ค. (-10000<=x<=10000)

 

ํ’€์ด

 

์‚ฌ์šฉํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. 

์œ„์น˜๊ฐ€ -์ธ ์ฑ…๊ณผ +์ธ ์ฑ…์€ ๋”ฐ๋กœ ๋‚˜๋ˆ„์–ด ์ƒ๊ฐํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. 

(-์™€ +์ธ ์ฑ…์„ ํ•œ๋ฒˆ์— ๋“ค๊ณ  ์šด๋ฐ˜ํ•  ๊ฒฝ์šฐ, ๊ฒฝ๋กœ ์‚ฌ์ด์— ์–ด์ฐจํ”ผ ์›์ ์„ ์ง€๋‚˜๊ฒŒ ๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.)

 

๊ฐ€์žฅ ๋จผ ์ฑ…์„ ๊ธฐ์ค€์œผ๋กœ M๊ฐœ๋ฅผ ์ •๋ฆฌํ•  ๋•Œ ๋“œ๋Š” ์™•๋ณต ๊ฑธ์ŒํšŸ์ˆ˜๋Š” ๊ฐ€์žฅ ๋จผ ์ฑ…์˜ ์œ„์น˜์— ์˜ํ–ฅ์„ ๋ฐ›๋Š”๋‹ค.

ex) 100, 10, 1 ์ด๋ ‡๊ฒŒ ์„ธ๊ฐœ์˜ ์ฑ…์„ ์ •๋ฆฌํ•œ๋‹ค๊ณ ํ–ˆ์„ ๋•Œ ์–ด์ฐจํ”ผ 100์œ„์น˜์— ๋‹ค๋…€์™€์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. 

 

๋งˆ์ง€๋ง‰ ์ฑ…์„ ์ •๋ฆฌํ•œ ์ดํ›„์—๋Š” ๋Œ์•„์˜ฌ ํ•„์š”๊ฐ€ ์—†๋‹ค. ์žฌํ›ˆ์ด๊ฐ€ k๋ฒˆ ์™”๋‹ค๊ฐ”๋‹ค ํ•ด์•ผํ•˜๋Š” ๊ฒฝ์šฐ์— 

๊ฑฐ๋ฆฌ๊ฐ€ ์ œ์ผ ๋จผ ์ฑ…์„ ์ •๋ฆฌํ•  ๋•Œ ๋Œ์•„์˜ค์ง€ ์•Š๋Š”๊ฒƒ์ด ์œ ๋ฆฌํ•˜๋‹ค. 

ex) 36, 80 ๋‘๊ถŒ์˜ ์ฑ…์„ ์ •๋ฆฌํ•˜๊ณ , ํ•œ ๋ฒˆ์— ํ•œ๊ถŒ์˜ ์ฑ…๋งŒ ์šด๋ฐ˜ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ•˜์ž.

๋งˆ์ง€๋ง‰์— 80์„ ์ •๋ฆฌํ•˜๋Š” ๊ฒฝ์šฐ : 36*2+80 = 152

๋งˆ์ง€๋ง‰์— 36์„ ์ •๋ฆฌํ•˜๋Š” ๊ฒฝ์šฐ : 80*2+36 = 196

๋”ฐ๋ผ์„œ ๊ฐ€์žฅ ๋ฉ€~๋ฆฌ ๊ฐ€์•ผํ•˜๋Š” ๊ฒฝ์šฐ๋ฅผ ๋งˆ์ง€๋ง‰์— ์ •๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ์œ ๋ฆฌํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. 

 

์˜ˆ์‹œ

๋ณด๋ผ์ƒ‰์œผ๋กœ ์น ํ•œ ์ˆ˜๋“ค(๊ฐ ๊ทธ๋ฃน์˜ ์ตœ๋Œ“๊ฐ’) ์ค‘์— ๊ฐ€์žฅ ํฐ ๊ฐ’์€ ๋งˆ์ง€๋ง‰์— ์ •๋ฆฌํ•˜๋Š” ๊ฒƒ์œผ๋กœ ํ•ด์„œ ํŽธ๋„๋กœ ๊ณ„์‚ฐํ•˜์˜€๋‹ค. 

 

์ฝ”๋“œ 

 

#include <stdio.h>
#include <algorithm>
using namespace std;
bool desc(int a, int b) { return a > b; } //๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ์„ ์œ„ํ•œ ํ•จ์ˆ˜ 
int main() {
	int n, m,temp;
	int pnum = 0; int nnum = 0; //๊ฐ๊ฐ ๊ฑฐ๋ฆฌ๊ฐ€ ์–‘์ˆ˜/์Œ์ˆ˜์ธ ์ฑ…์˜ ๊ฐœ์ˆ˜๋ฅผ ๋‹ด๋Š” ๋ณ€์ˆ˜ 
	int pbooks[10001]; int nbooks[10001];
	scanf_s("%d %d", &n, &m);
	for (int i = 0;i < n;i++) {
		scanf_s("%d", &temp);
		if (temp > 0) 
			pbooks[pnum++]=temp;
		else 
			nbooks[nnum++] = -1 * temp;
	}
	sort(pbooks, pbooks + pnum,desc); //๊ฑฐ๋ฆฌ๊ฐ€ ๋จผ ์ˆœ์„œ๋กœ ์ •๋ ฌ 
	sort(nbooks, nbooks + nnum,desc);
	int idx = 0; //๊ฐ ๋ฐฐ์—ด์— ์ฑ…๋“ค์ด ๊ฑฐ๋ฆฌ๊ฐ€ ๋จผ ์ˆœ์œผ๋กœ ์ •๋ ฌ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— 0๋ฒˆ์ฑ…์„ ๊ฐ€์žฅ ๋จผ์ € ์ •๋ฆฌ 
	int result = 0;
	int M = 0;
	while (idx < pnum) { //์ฑ…์„ ๋ชจ๋‘ ์ •๋ฆฌํ•  ๋•Œ ๊นŒ์ง€ ! 
    	//์‚ฌ์‹ค ์ด if๋ฌธ์€ ์–ด์ฐจํ”ผ ์ฑ…๋“ค์ด ์ •๋ ฌ๋˜์–ด์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ตณ์ด ํ•„์š” ์—†๋Š”๋“ฏ.. 
		if (pbooks[idx] > M) { //์ง€๊ธˆ ์ •๋ฆฌํ•œ ์ฑ…์ด ๊ฐ€์žฅ ๋ฉ€๋ฆฌ์žˆ๋Š” ์ฑ…์ผ ๊ฒฝ์šฐ 
			result += pbooks[idx]; //๊ฐ€์žฅ ๋จผ ๊ฑฐ๋ฆฌ๋Š” ํŽธ๋„! ํ•œ๋ฒˆ๋งŒ ๋”ํ•˜๊ธฐ! 
			result += M; //M์ด ํŽธ๋„๋ผ์„œ ํ•œ๋ฒˆ๋งŒ ๋”ํ•ด์ ธ์žˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์™•๋ณต๊ฑฐ๋ฆฌ๋กœ ๊ณ„์‚ฐํ•ด์ฃผ๊ธฐ ์œ„ํ•ด ํ•œ๋ฒˆ ๋” ๋”ํ•จ 
			M = pbooks[idx]; //M๊ฐ’ ๊ฐฑ์‹  
		}
		else
			result += (pbooks[idx] * 2); //์™•๋ณต ๊ฑฐ๋ฆฌ ๋”ํ•ด์ฃผ๊ธฐ 
		idx += m; //ํ•œ ๋ฒˆ์— m๊ถŒ ์”ฉ ์ •๋ฆฌํ•˜๋‹ˆ๊นŒ 
	}
	idx = 0; //idx ์ดˆ๊ธฐํ™” 
	while (idx < nnum) {
		if (nbooks[idx] > M) { //ํ•„์š”์—†๋Š”..๋ถ€๋ถ„..
			result += nbooks[idx];
			result += M;
			M = nbooks[idx];
		}
		else
			result += (nbooks[idx] * 2);
		idx += m;
	}
	printf("%d", result);
	
}

์ฑ…๊ณผ ์›์ ๊ฐ„์˜ ๊ฑฐ๋ฆฌ๋ฅผ ์ด์šฉํ•œ ๋ฌธ์ œ์ด๊ธฐ ๋•Œ๋ฌธ์—, - ๊ฑฐ๋ฆฌ์ธ ๊ฒฝ์šฐ์— ์–‘์ˆ˜๋กœ ๋ฐ”๊พธ์–ด์„œ ์ €์žฅํ•ด์ฃผ์—ˆ๋‹ค. 

(๊ทธ๋ž˜์„œ ์•„์˜ˆ ์–‘์ˆ˜์™€ ์Œ์ˆ˜๋ฅผ ๋‹ค๋ฅธ ๋ฐฐ์—ด์— ์ €์žฅํ•ด์„œ ๋”ฐ๋กœ ์ฒ˜๋ฆฌํ•˜์˜€๋‹ค.)

 

์ตœ์ข… ๊ฑฐ๋ฆฌ ๊ณ„์‚ฐ์— ์ด์šฉ๋˜๋Š” ์ˆซ์ž๋“ค์„ ๋”ฐ๋กœ ๋ฐฐ์—ด์— ์ €์žฅํ•˜๊ธฐ๊ฐ€ ์‹ซ์–ด์„œ, while๋ฌธ์„ ๋Œ๋ฉด์„œ ๋ฐ”๋กœ๋ฐ”๋กœ ๋”ํ•˜๋˜, max๊ฐ’์„ ๋งค๋ฒˆ ๊ฐฑ์‹ ํ•ด ์ฃผ๋ฉด์„œ ์ตœ์†Œ๊ฑฐ๋ฆฌ๋ฅผ ๊ณ„์‚ฐํ–ˆ๋‹ค. 

 

 

๋‹ค๋ฅธ ํ’€์ด๋“ค

https://kimpika.tistory.com/55

 

[๋ฐฑ์ค€] 1461: ๋„์„œ๊ด€

๋ฐฑ์ค€ ์˜จ๋ผ์ธ ์ €์ง€(BOJ) 1461๋ฒˆ: ๋„์„œ๊ด€ https://www.acmicpc.net/problem/1461 #์‚ฌ์šฉ์–ธ์–ด: C++ 1. ๋ฌธ์ œ : ์„ธ์ค€์ด๋Š” ๋„์„œ๊ด€์—์„œ ์ผํ•œ๋‹ค. ๋„์„œ๊ด€์˜ ๊ฐœ๋ฐฉ์‹œ๊ฐ„์ด ๋๋‚˜์„œ ์„ธ์ค€์ด๋Š” ์‚ฌ๋žŒ๋“ค์ด ๋งˆ๊ตฌ ๋†“์€ ์ฑ…์„ ๋‹ค์‹œ ๊ฐ€์ ธ๋‹ค..

kimpika.tistory.com

์ด ๋ถ„์€ ๋ฒกํ„ฐ๋ฅผ ์ด์šฉํ•ด์„œ ํ‘ธ์…จ๋‹ค. + ๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜ 

๊ทธ๋ฆฌ๋”” ๋ฏธ๋ž˜๋ฅผ ์ƒ๊ฐํ•˜์ง€ ์•Š๊ณ  ๊ฐ ๋‹จ๊ณ„์—์„œ ๊ฐ€์žฅ ์ตœ์„ ์˜ ์„ ํƒ์„ ํ•˜๋Š” ๊ธฐ๋ฒ•์ด๋‹ค.

์ด๋ ‡๊ฒŒ ๊ฐ ๋‹จ๊ณ„์—์„œ ์ตœ์„ ์˜ ์„ ํƒ์„ ํ•œ ๊ฒƒ์ด ์ „์ฒด์ ์œผ๋กœ๋„ ์ตœ์„ ์ด๊ธธ ๋ฐ”๋ผ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค. 

 

https://zoonvivor.tistory.com/137

 

[BOJ] ๋ฐฑ์ค€ 1461 - ๋„์„œ๊ด€ (์ž๋ฐ”)

์‹œ๋ฎฌ๋ ˆ์ด์…˜....,, ์•„์ด๋””์–ด๋Š” ๊ฐ„๋‹จํ•œ๋‹ค. ๊ฑฐ๋ฆฌ ๋จผ M๊ฐœ์”ฉ ๋ฌถ์–ด ๊ฑฐ๋ฆฌ๋ฅผ ํ•ฉ์นœ๋‹ค. ์ตœ์ข…์ ์œผ๋กœ ํ•ฉ์นœ ๊ฑฐ๋ฆฌ์—์„œ ๊ฐ€์žฅ ๋ฉ€์—ˆ๋˜ ๊ฑฐ๋ฆฌ๋ฅผ ๋บ€๋‹ค. ๋‚˜๋Š” ์Œ์ˆ˜์™€ ์–‘์ˆ˜๋ฅผ ๋‚˜๋ˆ ์„œ ๊ณ„์‚ฐํ–ˆ๋‹ค. ๋ฒ”์œ„๊ฐ€ ์ž‘์•˜๊ธฐ์— ๊ฐ€๋Šฅํ–ˆ์ง€๋งŒ ๋‚ด๊ฐ€ ๊ตฌํ˜„ํ•œ๊ฒƒ..

zoonvivor.tistory.com

์ด ๋ถ„์€ ์šฐ์„ ์ˆœ์œ„ ํ๋ฅผ ์‚ฌ์šฉํ•˜์…จ๋‹ค. 

 

์‚ฌ์šฉํ•œ ๋ณ€์ˆ˜ ํƒ€์ž…์€ ์กฐ๊ธˆ์”ฉ ๋‹ค๋ฅด์ง€๋งŒ ๊ทผ๋ณธ์ ์ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๋‹ค๋“ค ๋น„์Šทํ•œ ๊ฒƒ ๊ฐ™๋‹ค. 

๋ฐ˜์‘ํ˜•