๋ฌธ์ : 1859. ๋ฐฑ๋ง ์ฅ์ ํ๋ก์ ํธ
๋ ์ง: 08/28 (์)
์ฑ๊ณต์ฌ๋ถ: O(๋๊ธํํธ)
๊ทธ๋ฆฌ๋ ๋ฌธ์ ์ด๋ค. ๊ทธ๋ฆฌ๋์ ๋ํ ์ค๋น๊ฐ ์๋์ด์์ด์ ์ข ์ด๋ ค์ ๋ค. ๊ฒฐ๋ก ๋ถํฐ ๋งํ๋ฉด ๋ฐฐ์ด์ ๋ค๋ก ๋ฐ๋ณตํด์ ํ๋ฉด ํ๋ฆฌ๋ ๋ฌธ์ ์ด๋ค. ๋ฌด์กฐ๊ฑด ๋ฐฐ์ด์ ์์์๋ถํฐ ๋ฐ๋ณตํ ํ์๊ฐ ์๋ค๋ ์๊ฐ์ ํด์ผํ๋ค.. ์ด๊ฒ ์ฐธ ์ฌ์ด๋ฐ ์ด๋ ค์ด๋ฏํ๋ค.
์ฒ์ ํ์ด๋ ์์์๋ถํฐ ๋ฐ๋ณตํ๋ฉด์ ํ์ฌ ๊ฐ์์ ๋ฐ๋ก ๋ค์ ์๊ธฐ๋ณด๋ค ์์ ๊ฐ์ด ๋์ค๋ฉด ํ์ฌ ๊ฐ์ ๊ธฐ์ค์ผ๋ก ์ง๊ธ๊น์ง ์ฐ ๋ฌผ๊ฑด๋ค์ ํ์ ๊ทธ ์ฐจ์ก์ ret ๋ณ์์ ๋ํ๋ค. ์์ ๋ง ๋๊ณ ๋ณด๋ฉด ํด๋น ๋ก์ง์ ๋ฌธ์ ๊ฐ ์๋ค. ๊ทธ๋ฐ๋ฐ ์๋ ๋ฐ๋ก๊ฐ ์๋ค.
1 2 3 5 2 4 7 1
1 2 3 5 2 4๊น์ง ๋ชจ๋ ์ฐ๋ค์์ 7์์ ํ๋ฉด ์ต๋ ์ด์ต!
๊ทธ๋ฌ๋, ์์ ๋ก์ง๋๋ก ํ๋ค๋ฉด 1 2 3 ๊น์ง ์ฐ ํ 5์์ ๋ชจ๋ ํ๊ณ , ๋ค์ 2 4๊น์ง ์ฐ ํ 7์์ ํ๋งคํ๋ค.
์ด๋ฐ ๋ฐ๋ก๋ฅผ ์๊ฐ๋ชปํด์ ๋๊ธ์ ์ฐธ๊ณ ํ๊ณ ๋ค์์ ํ๋ฉด ๋๋ค๊ณ ํด์ ๊ทธ ์๊ฐ์ ๊ฐ๊ณ ๋ค์ ํ์๋ค.
๋ฐฐ์ด์ ๋ค์์๋ถํฐ ๋ฐฐ์ด์ ์์๋ฅผ ๊ฐ์ง๊ณ max ๊ฐ์ ๊ฐฑ์ ํ๋ฉด์ max ๊ฐ๋ณด๋ค ์์ ๊ฐ๋ค์ ์ฌ๋๊ณ max์์ ํ๋งคํ๋ฉด ๊ทธ๋๊ฐ ์ ์ผ ์ด๋์ ๋ณผ ์์๋ ์ํฉ์ด๋๊น ๊ทธ ์ฐจ์ก์ ๊ณ์ฐํด ret์ ๋ํด์ค๋ค. ์์ ์์ ๋ฅผ ์๋ก ๋ค๋ฉด
1 2 3 5 2 4 7 1
์ฒ์์ max = 1
๊ทธ๋ฆฌ๊ณ ๋ค์ ์์๋ก ๊ฐ๋ฉด max < 7 ์ด๊ธฐ ๋๋ฌธ์ max = 7์ด ๋๊ณ
์ดํ๋ถํฐ๋ ๊ณ์ max > 4 or 2 or 5 or 3 or 2 or 1์ด๋ค.
๊ทธ๋ผ max ๊ฐ์ ํด๋น ์์๋ฅผ ๋นผ์ ๊ทธ ์ฐจ์ก์ ๊ณ์ ret์ ๋ํด์ฃผ๋ฉด ๋๋ค.
์ฝ๋
import java.util.Scanner;
public class Solution {
static int[] gold;
static long ret;
public static void main(String args[]) throws Exception
{
Scanner sc = new Scanner(System.in);
int T;
T=sc.nextInt();
for(int test_case = 1; test_case <= T; test_case++)
{
int n = sc.nextInt();
gold = new int[n];
for (int i = 0; i < n; i++) gold[i] = sc.nextInt();
ret = 0;
int max = 0;
for (int i = n-1; i >= 0; i--) {
if (gold[i] > max) max = gold[i];
else ret += (max - gold[i]);
}
System.out.println("#" + test_case + " " + ret);
}
}
}
'์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
2156 - ํฌ๋์ฃผ ์์ (0) | 2024.08.30 |
---|---|
1463 - 1๋ก ๋ง๋ค๊ธฐ (0) | 2024.08.29 |
2632 - ํผ์ํ๋งค (2) | 2024.08.25 |
17143 - ๋์์ (0) | 2024.08.24 |
17406 - ๋ฐฐ์ด ๋๋ฆฌ๊ธฐ 4 [์ฑ๊ณต(๋ฐ๋กํํธ)|01:06:16] (1) | 2024.08.17 |