[TIL] (230815) ๐Ÿ™‹โ€โ™€ ๋ฌธ์ œ์กฐ๊ฑด์˜ ์ตœ๋Œ€๋ฒ”์œ„๋ฅผ ๊ผญ ํ™•์ธํ•˜์ž.

Noh Jihyeonยท2023๋…„ 8์›” 15์ผ
0

TIL

๋ชฉ๋ก ๋ณด๊ธฐ
2/49
post-thumbnail

์˜ค๋Š˜์€ ์กฐ๊ฑด๋ฌธ๊ณผ ๋ฐ˜๋ณต๋ฌธ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋ณธ์˜ˆ์ œ + ์‹ฌํ™”ํ•™์Šต์„ ์œ„ํ•ด ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ๋ฌธ์ œํ’€์ด๋ฅผ ์ง„ํ–‰ํ–ˆ๋‹ค.
๋ฌด๋ฆฌ ์—†์ด ํ’€์–ด๋‚˜๊ฐ€๋˜ ์ค‘ ์ฝ”๋“œ ์‹คํ–‰ ์‹œ ์—๋Ÿฌ ๋ฉ”์‹œ์ง€ ์—†์ด ์ •์ƒ์œผ๋กœ ์ถœ๋ ฅ๋˜๋‚˜ ์ •๋‹ต์œผ๋กœ ์ œ์ถœํ•˜๋‹ˆ ์‹คํŒจ๋กœ ์ œ์ถœ๋ถˆ๊ฐ€๋ผ๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ›์•˜๋‹ค.
์–ด๋””๊ฐ€ ์–ด๋–ป๊ฒŒ ์ž˜๋ชป๋œ ๊ฑด์ง€ ํ™•์ธํ•ด ๋ณด์ž.



๐Ÿ”ธ๋ฌธ์ œ ๋ฐœ์ƒ

๋ฌธ์ œ๋งํฌ: https://school.programmers.co.kr/learn/courses/30/lessons/82612#%EF%BB%BF

๊ธฐ๋ณธ์ž…์žฅ๋ฃŒ๋Š” price์ด๋‚˜ ๋†€์ด๊ธฐ๊ตฌ๋ฅผ N๋ฒˆ์งธ ์ด์šฉํ•œ๋‹ค๋ฉด ๋‹ค์Œ ํšŒ์ฐจ๋ถ€ํ„ฐ๋Š” ์ด์šฉ๋ฃŒ์˜ N๋ฐฐ๋ฅผ ๋‚ด์•ผ ํ•œ๋‹ค.
๋†€์ด๊ธฐ๊ตฌ๋ฅผ count๋ฒˆ ํƒ€๊ฒŒ ๋˜๋ฉด ํ˜„์žฌ ์ž์‹ ์ด ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ธˆ์•ก์—์„œ ์–ผ๋งˆ๊ฐ€ ๋ชจ์ž๋ผ๋Š”์ง€๋ฅผ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•˜๋ผ.
๋‹จ, ๊ธˆ์•ก์ด ๋ถ€์กฑํ•˜์ง€ ์•Š์œผ๋ฉด 0์„ return ํ•จ

* price : 1 โ‰ค price โ‰ค 2,500
* money : 1 โ‰ค money โ‰ค 1,000,000,000
* count : 1 โ‰ค count โ‰ค 2,500
-price, money, count๋Š” ๋ชจ๋‘ ์ž์—ฐ์ˆ˜

โœ… ์ฒ˜์Œ ๊ธฐ์žฌํ•œ ์ฝ”๋“œ


class Solution {
    public long solution(int price, int money, int count) {
        long answer = -1;

        for(int i=1; i<=count; i++){
        money -= price * i;
        }
        answer = (money < 0)? (long)money * (-1):0;

        return answer;
    }
}

โœ… ์‹คํ–‰ ๊ฒฐ๊ณผ (๋ถ€๋ถ„ ์‹คํŒจ ๋œธ)



๋ฌธ์ œ์—์„œ ์š”๊ตฌํ•˜๋Š” ์กฐ๊ฑด์„ ๋ชจ๋‘ ๊ธฐ์ž…ํ–ˆ๊ณ , ์ค‘๊ฐ„ ํ…Œ์ŠคํŠธ๋„ ์ •์ƒ์ด์—ˆ๋Š”๋ฐ ๋”ฑ 19~22๋ฒˆ ํ…Œ์ŠคํŠธ์—์„œ๋งŒ ์‹คํŒจ๊ฐ€ ๋–ด๋‹ค.

์—๋Ÿฌ ๋ฉ”์‹œ์ง€๊ฐ€ ๋‚˜์™”๋‹ค๋ฉด ๊ทธ ๋ถ€๋ถ„์„ ์ค‘์ ์ ์œผ๋กœ ๋ณด๊ณ  ๊ณ ๋ฏผํ•˜๊ฒ ์œผ๋‚˜ ์ด๋ฒˆ ์˜ค๋ฅ˜๋Š” ์–ด๋””์„œ๋ถ€ํ„ฐ ์ž˜๋ชป๋œ ๊ฑด์ง€, ์•„๋‹ˆ ์ •๋ง ์ž˜๋ชป๋œ ๊ฑด ๋งž๋Š” ๊ฑด์ง€

ํ•œ์ฐธ์„ ๊ณ ๋ฏผํ•˜๋ฉฐ ํ•˜๋‚˜์”ฉ ์ ๊ฒ€ํ•ด ๋ณด์•˜๋‹ค.



๐Ÿ”ธ์‹œ๋„ํ•ด ๋ณธ ๊ฒƒ

์ผ๋‹จ ๊ทธ๋™์•ˆ์˜ ๊ฒฝํ—˜์ƒ ์ฒ˜์Œ๋ถ€ํ„ฐ ์˜ค๋ฅ˜๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด ์ฝ”๋“œ์˜ ์ง„ํ–‰ ๋ฐฉํ–ฅ์€ ์ž˜ ์žก์•˜์œผ๋‚˜ ๊ตฌ์กฐ์ ์ธ ๋ฌธ์ œ์˜€๋˜ ๊ฑธ ๋– ์˜ฌ๋ ธ๋‹ค.

1. ์ฒซ ๋ฒˆ์งธ๋กœ answer์ด longํ˜•์ธ๋ฐ price * i -> intํ˜•์œผ๋กœ ๋ฐ˜ํ™˜๋˜๋Š” ๊ฒŒ ์›์ธ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์—ฌ (long)์œผ๋กœ ์ง์ ‘ ํ˜•๋ณ€ํ™˜์„ ์‹œ๋„ํ–ˆ๋‹ค(์‹คํŒจ)

    2. ๋‘ ๋ฒˆ์งธ๋กœ answer = (money < 0)? (long) money * (-1):0; ์—ญ์‹œ (-1)๋•Œ๋ฌธ์— answer๊ณผ ํƒ€์ž…์ด ๋งž์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์•„์„œ ์—ฌ๊ธฐ๋„ (long)์œผ๋กœ ํ˜•๋ณ€ํ™˜์„ ์‹œ๋„ํ–ˆ๋‹ค. (์‹คํŒจ)  

    3. ์„ธ ๋ฒˆ์งธ๋กœ๋Š” ์ •๋ง ๋ชจ๋ฅด๊ฒ ์–ด์„œ ๋ˆˆ์— ๋ณด์ด๋Š” ์ˆซ์žํ˜• ํƒ€์ž…์˜ ๋ณ€์ˆ˜๋ฅผ ์ „๋ถ€ long ํƒ€์ž…์œผ๋กœ ๋ฐ”๊ฟ”๋ดค๋‹ค.(์„ฑ๊ณต)

๋‹ต์€ ๋ฌด์‚ฌํžˆ ์ œ์ถœ๋˜์—ˆ์œผ๋‚˜ ์˜คํžˆ๋ ค ๋‚˜๋Š” ๋” ๊นŠ์€ ์˜๋ฌธ์— ๋น ์กŒ๋‹ค.

๊ทธ ์ด์œ ๋Š” ๋ฌด์ž‘์ • (long)์œผ๋กœ ํ˜•๋ณ€ํ™˜์„ ํ•˜๊ธฐ ์ „์— int์˜ ๋ฒ”์œ„๋ฅผ ํ•œ๋ฒˆ ๋” ์ฐพ์•„๋ณด๊ณ  ๋˜ price * i์˜ ์ตœ๋Œ“๊ฐ’์„ ๋”ฐ๋กœ ์‹คํ–‰ํ•ด ๋ณด์•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.



๊ฐ๊ฐ ์ตœ๋Œ“๊ฐ’์ธ 2500์œผ๋กœ ์„ค์ •ํ•˜๊ณ  ๋ชจ๋‘ ๋” ํ•ด๋ดค์„ ๋•Œ -774,309,592๋กœ 7์–ต๋Œ€๊ฐ€ ๋‚˜์™”๊ณ , ๋งŒ์•ฝ money๊ฐ€ ์ตœ์†Ÿ๊ฐ’์ธ 1์ด๋ผ๊ณ  ํ•ด๋„ int์˜ ๋ฒ”์œ„ ์•ฝ -21์–ต~21 ์–ต๋‚ด์— ์กด์žฌํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

count๋Š” ๋ฐ˜๋ณต๋ฌธ์— ์‚ฌ์šฉ๋˜์—ˆ์œผ๋‹ˆ ํ™•์‹คํžˆ ๊ด€๋ จ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— price์™€ money์—์„œ ๋ฌธ์ œ ๋˜๋Š” ๋ณ€์ˆ˜๊ฐ€ ํ•˜๋‚˜์ธ์ง€ ๋‘˜ ๋‹ค์˜€๋Š”์ง€ ๊ฒ€์ˆ˜๋ฅผ ํ•ด๋ดค๋‹ค.

์‹คํ–‰๊ฒฐ๊ณผint priceint money
์„ฑ๊ณตlonglong
์‹คํŒจlongint
์„ฑ๊ณตintlong

money๊ฐ€ ๋ฌธ์ œ์˜€๊ณ  ์ฃผ์–ด์ง„ ๋ฒ”์œ„๋Š” ์ตœ๋Œ€ 10์–ต์ด์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๋ฐ›์•„์˜ค๋Š” ๊ฐ’์ด ์•„๋‹Œ

์„ค์ •ํ•œ ์ฝ”๋“œ money -= price * i;

์ฆ‰, price * i๊ฐ€ ๋ฌธ์ œ์˜€๋˜ ๊ฒƒ์œผ๋กœ ์ƒ๊ฐ๋˜์–ด ๊ฐ’์„ ์ถœ๋ ฅ๊ฐ’์„ ๋‹ค์‹œ ๋ณด์•˜๋‹ค.

์•„์˜ˆ ๋ฐ˜๋ณต๋ฌธ์— ์ถœ๋ ฅ๋ฌธ์„ ํ•จ๊ป˜ ์ฐ์–ด์„œ ๋ณด๋‹ˆ ์ค‘๊ฐ„์— ๊ฐ’์ด ์ด์ƒํ•˜๊ฒŒ ๋‚˜์˜จ ๊ฑธ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ๊ณ  ๋“ฑ์ฐจ์ˆ˜์—ด์˜ ํ•ฉ์„ ์ด์šฉํ•˜์—ฌ ์ง์ ‘ ๊ณ„์‚ฐํ•ด ๋ณด์•˜๋‹ค.

์ฒซํ•ญ: 2500

๋งˆ์ง€๋ง‰ํ•ญ: 2500*2500

n = 2500

-> 2500(2500+2500*2500)/2 = 7,815,625,000 (์•ฝ 78์–ต)

์ด๋Ÿฌ๋‹ˆ int money์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒŒ ๋‹น์—ฐํ–ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  b๋ฅผ longํƒ€์ž…์œผ๋กœ ๋ณ€๊ฒฝ ํ›„ ํ•œ๋ฒˆ ๋” ๊ณ„์‚ฐํ•ด ๋ดค๋‹ค. (๊ณ„์‚ฐ๊ฐ’ ์ผ์น˜)



๐Ÿ”ธํ•ด๊ฒฐ

๐Ÿ‘‡ longํ˜•์˜ ๋ณ€์ˆ˜๋กœ ์ €์žฅ๋ฐ›๊ณ  ๋‚ด์•ผ ํ•  ๊ธˆ์•ก๊ณผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ธˆ์•ก์˜ ๋น„๊ต๋กœ ์ง„ํ–‰ํ•˜๊ธฐ.

class Solution {
    public long solution(int price, int money, int count) {
        long answer = 0;
        
        for(int i=1; i<=count; i++){
            answer += price * i;
        }           
        return (answer < money)? 0: answer-money;          
    }
}

price * i๊ฐ€ int์˜ ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚œ๋‹ค๋ฉด ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์€ ์—ฌ๋Ÿฌ ๊ฐ€์ง€๊ฐ€ ์žˆ์ง€๋งŒ ๋‚˜๋Š” ์ด ์„ธ ๊ฐ€์ง€๊ฐ€ ๋ฐ”๋กœ ์ƒ๊ฐ๋‚ฌ๋‹ค.

1. ์• ์ดˆ์— ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ intํ˜•์ด ์•„๋‹Œ longํƒ€์ž…์œผ๋กœ ๋ฐ›๊ธฐ

   ex) public long solution(int price, long money, int count)

2. intํ˜•์œผ๋กœ ๋„˜์–ด์˜จ ๋ณ€์ˆ˜๋ฅผ long์œผ๋กœ ๋‹ค์‹œ ๋ณ€ํ™˜ ํ›„ ๊ณ„์‚ฐํ•˜๊ธฐ

   ex) long longMoney = money;

3. โ˜… price * i๋ฅผ long ๋ณ€์ˆ˜๋กœ ๋ฐ›๊ณ  money๊ฐ’๊ณผ์˜ ๋Œ€์†Œ๋น„๊ต๋กœ return ํ•˜๊ธฐ - ์œ„์˜ ์ฝ”๋“œ ์ฐธ์กฐ

1๋ฒˆ์˜ ๊ฒฝ์šฐ ๋ฌธ์ œ์˜ ์˜๋„์™€ ๋ฒ—์–ด๋‚œ ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผํ–ˆ๊ณ 

2๋ฒˆ์˜ ๊ฒฝ์šฐ ์‚ฌ์šฉํ•  ๋ณ€์ˆ˜๊ฐ€ ํ•˜๋‚˜ ๋” ๋Š˜์–ด๋‚˜๊ธฐ ๋•Œ๋ฌธ์— ๋น„์šฉ์ ์ธ ๊ด€์ ์—์„œ ์„ ํƒํ•˜์ง€ ์•Š์•˜๋‹ค.


๐Ÿ”ธ์•Œ๊ฒŒ ๋œ ์ 

์ฃผ์–ด์ง„ ์กฐ๊ฑด์— ๋ฒ”์œ„๊ฐ€ ์žˆ๋‹ค๋ฉด ๋ฐ˜๋“œ์‹œ ์ตœ์†Ÿ๊ฐ’, ์ตœ๋Œ“๊ฐ’์ผ ๋•Œ์˜ ์œ ํšจ์„ฑ์„ ๊ฒ€์‚ฌํ•ด ๋ณด์ž.

์ง€๊ธˆ๊นŒ์ง€๋Š” intํ˜•์˜ ํ‘œํ˜„๊ฐ’์„ ๋ฒ—์–ด๋‚˜๋Š” ์ƒํ™ฉ์„ ๋งŒ๋‚œ ์ ์ด ์—†์–ด์„œ ํ‘œํ˜„๊ฐ’์˜ ๋ฒ”์œ„๋ผ๋Š” ๊ฒƒ์— ๋Œ€ํ•ด ์•ˆ์ผํ•˜๊ฒŒ ์ƒ๊ฐํ–ˆ์—ˆ๋‹ค.

๋‹ค๋ฅธ ์ฝ”๋“œ์˜ค๋ฅ˜์™€๋Š” ๋‹ฌ๋ฆฌ ์–ด๋– ํ•œ ๋ฉ”์‹œ์ง€๋„ ๋œจ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ง€๊ธˆ์ฒ˜๋Ÿผ ํ‹€๋ ธ๋‹ค๊ณ  ์•Œ๋ ค์ฃผ์ง€ ์•Š์•˜๋‹ค๋ฉด ์˜์›ํžˆ ๋ชฐ๋ž์„ ๊ฒƒ์ด๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ด๊ฒŒ ์‹ค์ œ ํ”„๋กœ์ ํŠธ์˜€๋‹ค๋ฉด ๋‹ค๋ฅธ ์ฝ”๋“œ๋„ ๋งŽ์•„์„œ ์–ด๋Š ๋ถ€๋ถ„์˜ ์˜ค๋ฅ˜์ธ์ง€ ์ฐพ๊ธฐ๊ฐ€ ์ •๋ง ํž˜๋“ค์—ˆ์„ ๊ฑฐ๊ณ  ๊ทธ ์ž‘์€ ์‹ค์ˆ˜๊ฐ€ ๊ฑท์žก์„ ์ˆ˜ ์—†๋Š” ์˜ค๋ฅ˜๋ฅผ ๋งŒ๋“ค๊ฒŒ ๋  ๊ฒƒ์ด๋‹ค.

์ด๋ฒˆ์ผ์„ ๊ณ„๊ธฐ๋กœ ๋ฐ›์•„์˜จ ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ํƒ€์ž…๊ณผ ๊ณ„์‚ฐ์„ ์ง„ํ–‰ํ•ด์•ผ ํ•˜๋Š” ๋ณ€์ˆ˜์˜ ํƒ€์ž…์ด ๋ถˆ์ผ์น˜ํ•  ๊ฒฝ์šฐ ์ƒˆ๋กœ์šด ๋ณ€์ˆ˜๋กœ ๋‹ค์‹œ ๋ฐ›์•„์„œ ํ˜•ํƒœ๋ฅผ ๋งž์ถ”๊ฑฐ๋‚˜ ์ง์ ‘ ๊ณ„์‚ฐํ•˜์ง€ ์•Š๊ณ  ์„œ๋กœ์˜ ๊ฐ’์„ ๋น„๊ตํ•˜๋Š” ๋ฐฉ์‹์ด ๋” ์•ˆ์ „ํ•˜๋‹ค๋Š” ๊ฒƒ์„ ๊นจ๋‹ฌ์•˜๋‹ค.

์•ž์œผ๋กœ๋Š” ์กฐ๊ฑด์ด ์ฃผ์–ด์ง€๋ฉด ๊ฐ’์˜ ํ‘œํ˜„๋ฒ”์œ„๋ฅผ ๋จผ์ € ํ™•์‹คํ•˜๊ฒŒ ์ฒดํฌํ•ด์•ผ๊ฒ ๋‹ค.

profile
๊ผญ๊ผญ ์”น์–ด์„œ ์†Œํ™”์‹œํ‚ค๋Š” ๋ง›์žˆ๋Š” ์ฝ”๋”ฉ

0๊ฐœ์˜ ๋Œ“๊ธ€