โน๏ธ[SW Expert Academy] [Python] [D2] [1859] ๋ฐฑ๋ง ์ฅ์ ํ๋ก์ ํธ
๋ฌธ์
SW Expert Academy
SW ํ๋ก๊ทธ๋๋ฐ ์ญ๋ ๊ฐํ์ ๋์์ด ๋๋ ๋ค์ํ ํ์ต ์ปจํ ์ธ ๋ฅผ ํ์ธํ์ธ์!
swexpertacademy.com
ํ์ด
์ฒ์ ๋ฌธ์ ๋ฅผ ํ์ด๋ณธ๋ค๋ฉด ์กฐ๊ธ ์๊ฐํ๋ ๋ฐฉ์์ ๋ฌ๋ฆฌํด์ผํด์ ์ด๋ ค์์ด ์์์ ๊ฒ ๊ฐ๋ค. ๋๋ ์ฒ์์ ๋ฌธ์ ๋ฅผ ๋ดค์ ๋ ์คํ์ด๋ ํ๋ฅผ ์ด์ฉํด์ ์ฒ๋ฆฌํด๋ณด๋ ค๊ณ ํ๋ค. ์ฃผ์ด์ง ์กฐ๊ฑด์ ์ ํ์ฉํ๋ฉด ํด๊ฒฐํ ์ ์๋ ๋ฌธ์ ์ด๋ค. ํ ์คํธ ์ผ์ด์ค์ ์ฒซ๋ฒ์งธ๋ 10, 7, 6 ์ผ๋ก ๊ฐ์ด ์ ์ ๊ฐ์ํ๋ฏ๋ก ๊ตฌ๋งคํ์ง ์๋ ๊ฒ์ด ์ต์ ์ ํด์ด๋ค. ๋๋ฒ์งธ๋ ๊ฐ์ด ํญ์ ์ฆ๊ฐํ๋ฏ๋ก ๊ทธ๋ ๋ฐ๋ก ์ฌ์ ๋ง์ง๋ง ๋ ์ ํ๋ฉด๋๋ค. ๋ง์ง๋ง ์ธ๋ฒ์งธ ์ผ์ด์ค๋ง ๊ฒฝ์ฐ์ ์๋ฅผ ์๊ฐํด์ฃผ๋ฉด ๋๋๋ฐ 1, 1, 3, 1, 2 ๋ก ์ฒซ์งธ์ ๋์งธ๋ ์๋ ๊ตฌ๋งค๋ฅผํด์ ์ ์งธ๋ ์ ํ๊ณ , ๋ท์งธ๋ ์ ์ฌ์ ๋ค์ฏ์งธ๋ ์ ํ๋ฉด๋๋ค. ๋จผ์ ์ด ์์๋ฅผ ์ญ์ผ๋ก ์๊ฐํด๋ณด์. ๊ทธ๋ฌ๋ฉด 2, 1, 3, 1, 1์ด ๋๋ค. 2->1๋ก ๊ฐ๋ ํ๊ณ , 3->1๋ก ๊ฐ๋ ํ๊ณ , 1->1๋ก ๊ฐ๋ 3-1์ ํด์ฃผ๋ฉด ๋๋ค. ์ฆ, ์ญ์ผ๋ก ๊ตฌ์ฑ๋ ์ด์ ๊ฐ์ด ๋ค์ ๊ฐ๋ณด๋ค ํฌ๋ค๋ฉด ํ๊ณ , max_val์ด๋ผ๋ ๊ฐ์ ๊ฐ์ฅ ํฐ ๊ฐ์ ์ ์ฅํด ๋๋๋กํ๋ค.
์ด๊ฒ์ ์ฝ๋๋ก ๋ณด์๋ฉด ์๋์ ๊ฐ๋ค.
# 1859. ๋ฐฑ๋ง ์ฅ์ ํ๋ก์ ํธ D2
T = int(input())
for test_case in range(1, T+1):
N = int(input())
price = list(map(int, input().split()))
price = price[::-1]
length = len(price)
max_val = price[0]
result = 0
for i in range(1, length):
if max_val > price[i]:
result += max_val - price[i]
else:
max_val = price[i]
print("#{} {}".format(test_case, result))
1. price๋ฅผ ์ ๋ ฅ๋ฐ๊ณ ๋ค์ง์ด ์ค๋ค.
2. max_val์๋ ์ฒ์ ์์๊ฐ์ ๋ฃ์ด์ค๋ค.
3. ์ธ๋ฑ์ค๋ 1๋ถํฐ ๋ง์ง๋ง๊น์ง for๋ฌธ์ ๋์์ค๋ค.
- ๋ง์ฝ max_val์ด ๊ฐ๊ฒฉ๋ณด๋ค ๋น์ธ๋ค๋ฉด ๋ฌผ๊ฑด์ ํ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ๊ฒฐ๊ณผ์ ๋ํด์ค๋ค.
- max_val์ด ๊ฐ๊ฒฉ๋ณด๋ค ์ธ๊ฑฐ๋ ๊ฐ๋ค๋ฉด max_val์ ๊ฐ์ ์ต๋๊ฐ์ผ๋ก ๋ณ๊ฒฝํด์ค๋ค.
Java ์ฝ๋
package SWEA;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
public class SW_1859 {
public static void main(String[] args) throws Exception, NullPointerException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
int T = Integer.parseInt(br.readLine());
for(int test_case = 1; test_case <= T; test_case++)
{
int N = Integer.parseInt(br.readLine());
int[] price = new int[N];
st = new StringTokenizer(br.readLine(), " ");
for(int i=0; st.hasMoreTokens(); i++){
price[i] = Integer.parseInt(st.nextToken());
}
int length = price.length;
int maxValue = price[N-1];
long result = 0;
for(int i=N-1; i>=0; i--){
if(price[i] > maxValue) maxValue = price[i];
result += maxValue-price[i];
}
System.out.println("#" + test_case + " " + result);
}
}
}
ํ ์คํธ ์ผ์ด์ค 10๊ฐ์ค 7๊ฐ ๋ง์๋ค๊ณ ํด์ ์๋ฌด๋ฆฌ ๋ด๋ ํ์ด์ฌ ์ฝ๋๋ ๋น๊ตํด๋ณด๊ณ ๋ค๋ฅธ์ฌ๋์ ์ฝ๋๋ ๋น๊ตํด๋ดค์ ๋ ํ๋ฆฐ๊ฒ ์์๋๋ฐ ์๊ณ ๋ณด๋ result์ ํ์ ์ด intํ์ด์๋ค. 100๋ง * 1๋ง ํ์ ๋ ํํํ ์ ์๋ intํ ๋ฒ์๋ฅผ ๋์ด๊ฐ๊ธฐ ๋๋ฌธ์ด๋ค.
์ด๋ฐ ๊ฒ ๋๋งค ์๊ฐ ๋ญ๋น๋ฅผ ํ๋๊ฒ ..