์šฐ๊ทœ์ด์ธ์šฐ์œค
Eager To Learn ๐ŸŒŒ
์šฐ๊ทœ์ด์ธ์šฐ์œค
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ๐Ÿก ํ™ˆ
  • ๐Ÿš€ ๊นƒํ—ˆ๋ธŒ
  • โ›… ํƒœ๊ทธ ํด๋ผ์šฐ๋“œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (217)
    • ๐Ÿ‘จ๐Ÿป‍๐Ÿ’ป PS (170)
      • JAVA (82)
      • MYSQL (1)
      • Docker (2)
      • PYTHON (24)
      • LeetCode 150 (39)
      • Algorithm ๊ธฐ๋ฒ• (1)
      • ๋ฐ”ํ‚น๋… (21)
    • ๋ธ”๋กœ๊ทธ ์ด์‚ฌ (0)
    • Error (1)
    • CS (15)
      • DataBase (2)
      • OS (7)
      • Network (1)
      • Spring (1)
      • ์ž๋ฃŒ๊ตฌ์กฐ (3)
      • Java (1)
    • Learned (7)
      • Spring (7)
    • ๊ฐœ๋ฐœ์„œ์  (15)
      • ๊ฐ€์ƒ ๋ฉด์ ‘ ์‚ฌ๋ก€๋กœ ๋ฐฐ์šฐ๋Š” ๋Œ€๊ทœ๋ชจ ์‹œ์Šคํ…œ ์„ค๊ณ„ ๊ธฐ์ดˆ (1)
      • ์˜ค๋ธŒ์ ํŠธ - ์กฐ์˜ํ˜ธ (7)
      • ์นœ์ ˆํ•œ SQL ํŠœ๋‹ (7)
    • ํšŒ๊ณ  (2)
hELLO ยท Designed By ์ •์ƒ์šฐ.
์šฐ๊ทœ์ด์ธ์šฐ์œค

Eager To Learn ๐ŸŒŒ

๐Ÿ‘จ๐Ÿป‍๐Ÿ’ป PS/LeetCode 150

[Java] 121. Best Time to Buy and Sell Stock

2023. 8. 24. 15:15

๋ฌธ์ œ ํŒŒ์•…

 

i๋‚  ์ฃผ์‹ ๊ฐ€๊ฒฉ์€ prices[i] ๊ณผ ๊ฐ™์ด ๋ฐฐ์—ด ํ˜•ํƒœ๋กœ ์ฃผ์–ด์ง„๋‹ค.

 

์ตœ๋Œ€๋กœ ์ˆ˜์ต์„ ๋ฐ˜ํ™˜ํ•ด์•ผํ•œ๋‹ค.

 

๋งŒ์•ฝ, ์–ด๋– ํ•œ ์ˆ˜์ต๋„ ์–ป์ง€ ๋ชปํ•œ๋‹ค๋ฉด 0 ์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

 


ํ’€์ด

 

1๏ธโƒฃ ์ด์ค‘ for๋ฌธ ํ’€์ด - ์‹œ๊ฐ„ ์ดˆ๊ณผ

 

๊ฐ€์žฅ ๋จผ์ € ๋– ์˜ค๋ฅธ ํ’€์ด๋Š”, ํŒŒ๋Š” ๋‚ ์„ ๊ณ ์ •ํ•˜๊ณ 

 

ํŒŒ๋Š” ๋‚  ์ด์ „์˜ ๊ฐ€๊ฒฉ๋“ค์„ ์ˆœํšŒํ•˜๋ฉด์„œ ์ตœ๋Œ“๊ฐ’์„ ๊ตฌํ•ด์•ผ๊ฒ ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค.

 

class Solution {
    public int maxProfit(int[] prices) {
        int ans = 0;
        for (int i = 1; i < prices.length; i++) {
            int sell = prices[i];
            for (int j = 0; j < i; j++) {
                int buy = prices[j];
                int profit = sell - buy;
                if (profit > 0) {
                    ans = Math.max(ans, profit);
                }
            }
        }

        return ans;
    }
}

 

๊ฒฐ๊ณผ

ํ•˜์ง€๋งŒ, ์ด ๋ฐฉ์‹์€ ์‹œ๊ฐ„ ๋ณต์žก๋„๊ฐ€ O(N^2) ์œผ๋กœ ์‹œ๊ฐ„ ์ดˆ๊ณผ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค.

 

์‹œ๊ฐ„ ๋ณต์žก๋„๊ฐ€ O(N) ์ด ๋  ์ˆ˜ ์žˆ๋Š” ํ’€์ด๋ฅผ ๋‹ค์‹œ ์ƒ๊ฐํ•ด๋ณด์•˜๋‹ค.

 

2๏ธโƒฃ O(N) ํ’€์ด

๋จผ์ € ํŠน์ • ๊ตฌ์—ญ์—์„œ ๊ฐ€์žฅ ๋‚ฎ์€ ๊ฐ’์„ ๊ตฌํ•  ์ˆ˜ ์žˆ๋Š” ๋กœ์ง์„ ์ƒ๊ฐํ•ด๋ดค๋‹ค.

 

๊ฐ€์žฅ ์‹ธ๊ฒŒ ์‚ฌ์•ผ ์ด์ต์„ ์ตœ๋Œ€ํ™” ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

        int buy = prices[0];

        for(int i=1;i<prices.length;i++){
            if(prices[i]<buy){
                buy = prices[i];
            }
        }

 

์œ„์™€ ๊ฐ™์€ ์ฝ”๋“œ๋กœ ์ž‘์„ฑํ•˜๋ฉด, 0~i๋ฒˆ์งธ ์›์†Œ ์ค‘์—์„œ ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’์ด buy์— ์ž…๋ ฅ๋œ๋‹ค.

 

๋งŒ์•ฝ, ๋น„๊ตํ•˜๋Š” ๊ฐ€๊ฒฉ( prices[i] ) ์ด buy๋ณด๋‹ค ํฐ ๊ฒฝ์šฐ๋Š” ํŒ๋งค๋ฅผ ํ•  ์ˆ˜ ์žˆ๊ณ 

 

์ด์ต์„ ๊ณ„์‚ฐํ•ด์„œ ์ตœ๋Œ“๊ฐ’์ด๋ฉด ๊ฐฑ์‹ ํ•ด์ฃผ๋Š” ์ž‘์—…์„ ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

 

class Solution {
    public int maxProfit(int[] prices) {
        int ans = 0;
        int buy = prices[0];

        for (int i = 1; i < prices.length; i++) {
            if (prices[i] < buy) {
                buy = prices[i];
            } else {
                ans = Math.max(ans, prices[i] - buy);
            }

        }
        return ans;
    }
}

 

๊ฒฐ๊ณผ


๐Ÿ“– ํšŒ๊ณ 

 

์‚ฌ์‹ค ์ด์ค‘ for๋ฌธ ๋ฐฉ์‹์œผ๋กœ ํ†ต๊ณผํ•  ์ •๋„๋กœ ์—ฐ์‚ฐ ์‹œ๊ฐ„์ด ๋„๋„ํ•œ ๋ฌธ์ œ๋Š” ๊ฑฐ์˜ ์—†๋‹ค..ใ…Ž

 

์ด์ค‘ for๋ฌธ ๋ฐฉ์‹์ด ๋จผ์ € ๋– ์˜ฌ๋ž๋‹ค๋ฉด, ๋” ์ข‹์€ ๋ฐฉ๋ฒ•์ด ์—†๋Š”์ง€ ๊ณ ๋ฏผํ•ด๋ณด๋Š” ์Šต๊ด€์„ ๊ฐ€์ ธ์•ผ๊ฒ ๋‹ค.

    '๐Ÿ‘จ๐Ÿป‍๐Ÿ’ป PS/LeetCode 150' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • [Java] 55. Jump Game
    • [Java] 122. Best Time to Buy and Sell Stock 2
    • [Java] 189. Rotate Array
    • [Java] 169. Majority Element
    ์šฐ๊ทœ์ด์ธ์šฐ์œค
    ์šฐ๊ทœ์ด์ธ์šฐ์œค
    ๊ฐœ๋ฐœ์ž ๊ฟˆ๋‚˜๋ฌด

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”