01-07 02:28
Recent Posts
Recent Comments
Tags
- ICT
- ์ด๋ธ์
- RaspberryPi
- linux
- ํ์ด์ฌ
- ict๊ณต๋ชจ์
- Naver Cloud
- Spring
- ์๋ฐ
- ํ์ด์๊ณต๋ชจ์
- ICT๋ฉํ ๋ง
- DB
- API๋ง์ผํ๋ ์ด์ค
- python
- SQL
- ์คํฝ์ค๋น
- DATABASE
- mysql
- ์จ์ผ๋ํ
- ํ๋ก๋ณด๋ ธ
- ์กํ๊ณ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค
- ์๋์ด๋ ธ
- JOBํ๊ณ
- API MarketPlace ๊ธ๋ก๋ฒ ์ํฌํฐ์ฆ
- TSQL
- ์คํฝ๋ ํ
- Java
- ํ์ด์
- appetizer
- Today
- Total
miinsun
[Programmers] ์คํ/ํ : ์ฃผ์๊ฐ๊ฒฉ JAVA ๋ณธ๋ฌธ
๐ฌ ๋ฌธ์ ์ค๋ช
์ด ๋จ์๋ก ๊ธฐ๋ก๋ ์ฃผ์ ๊ฐ๊ฒฉ์ด ๋ด๊ธด ๋ฐฐ์ด prices๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋,
๊ฐ๊ฒฉ์ด ๋จ์ด์ง์ง ์์ ๊ธฐ๊ฐ์ ๋ช ์ด์ธ์ง๋ฅผ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํ์ธ์.
๐ซ ์ ํ ์ฌํญ
- prices์ ๊ฐ ๊ฐ๊ฒฉ์ 1 ์ด์ 10,000 ์ดํ์ธ ์์ฐ์์ ๋๋ค.
- prices์ ๊ธธ์ด๋ 2 ์ด์ 100,000 ์ดํ์ ๋๋ค.
๐จ ์ ์ถ๋ ฅ ์
- ์
์ถ๋ ฅ ์
- 1์ด ์์ ์ โฉ1์ ๋๊น์ง ๊ฐ๊ฒฉ์ด ๋จ์ด์ง์ง ์์์ต๋๋ค.
- 2์ด ์์ ์ โฉ2์ ๋๊น์ง ๊ฐ๊ฒฉ์ด ๋จ์ด์ง์ง ์์์ต๋๋ค.
- 3์ด ์์ ์ โฉ3์ 1์ด๋ค์ ๊ฐ๊ฒฉ์ด ๋จ์ด์ง๋๋ค. ๋ฐ๋ผ์ 1์ด๊ฐ ๊ฐ๊ฒฉ์ด ๋จ์ด์ง์ง ์์ ๊ฒ์ผ๋ก ๋ด ๋๋ค.
- 4์ด ์์ ์ โฉ2์ 1์ด๊ฐ ๊ฐ๊ฒฉ์ด ๋จ์ด์ง์ง ์์์ต๋๋ค.
- 5์ด ์์ ์ โฉ3์ 0์ด๊ฐ ๊ฐ๊ฒฉ์ด ๋จ์ด์ง์ง ์์์ต๋๋ค.
โ
๐ป Solution.java
- ํ๋ก๊ทธ๋๋จธ์ค์์ ์คํ/ํ ๋ฌธ์ ๋ก ๋ถ๋ฅ๋์ง๋ง, ์คํ์ ์ด๋ป๊ฒ ํ์ฉํด์ผํ ์ง ๊ฐ์ด ์กํ์ง ์์ ์๊ฐ ๋๋๋๋ก ์ด์ค ๋ฐ๋ณต๋ฌธ์ผ๋ก ๊ตฌํํด๋ดค๋ค.
- ์ฒซ๋ฒ์งธ ๋ฐ๋ณต๋ฌธ์ ๊ธฐ์ค ์์ ์ด ๋๋ i์ ๊ฐ์ด๊ณ ๋๋ฒ์งธ ๋ฐ๋ณต๋ฌธ์ i + 1์ด๋ถํฐ ๋ง์ง๋ง๊น์ง์ ์ด๋ฅผ ๋ํ๋ธ๋ค
- ์งํ ์๊ฐ์ ๋งค์ด 1 ์ด์ฉ ์ฆ๊ฐํ๋ฉฐ, i์ด๋ณด๋ค ์์ ๊ฐ์ด ๋ํ๋๋ฉด ๋ฐ๋ณต๋ฌธ์ ์ค๋จํด์ค๋ค.
class Solution {
public int[] solution(int[] prices) {
int[] answer = new int [prices.length];
// i์ด์ ์์ ์ ๊ธฐ์ค์ผ๋ก ์งํ
for(int i = 0; i < prices.length; i++){
// i์ด ์ดํ๋ก ๊ฒ์ฌ๋ฅผ ์งํ
for(int j = i + 1; j < prices.length; j++){
answer[i]++;
if(prices[i] > prices[j]){ // i์ด๋ณด๋ค ์์ ๊ฐ์ด ์๋ค๋ฉด ๋ฐ๋ณต๋ฌธ ์ค๋จ
break;
}
}
}
return answer;
}
}
๋ค๋ฅธ ์ฌ๋์ ํ์ด ์ฐธ๊ณ ๋ฅผ ํด๋ณด๋
์คํ์ ์ด์ฉํด์ ํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์์๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก ๋ณด๋ฉด ๋ก์ง์ ๋์ ํ์ด์ ๋น์ทํ๋ฐ, ๊ตณ์ด ์คํ์ ์ฐ์ง ์์๋ ๋ด๊ฐ ํ์ดํ ๋ฐฉ์์ผ๋ก๋ ๋ฌธ์ ๋ฅผ ํธ๋ ๋ฐฉ๋ฒ์ด ๊ด์ฐฎ์ ๊ฒ ๊ฐ๋ค.
import java.util.Stack;
class Solution {
public int[] solution(int[] prices) {
Stack<Integer> beginIdxs = new Stack<>();
int i=0;
int[] terms = new int[prices.length];
beginIdxs.push(i);
for (i=1; i<prices.length; i++) {
while (!beginIdxs.empty() && prices[i] < prices[beginIdxs.peek()]) {
int beginIdx = beginIdxs.pop();
terms[beginIdx] = i - beginIdx;
}
beginIdxs.push(i);
}
while (!beginIdxs.empty()) {
int beginIdx = beginIdxs.pop();
terms[beginIdx] = i - beginIdx - 1;
}
return terms;
}
}
'Algorithm > Programmers' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Comments