๐Ÿ–ฅ๏ธ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ/Python

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] [Python] [PCCE ๊ธฐ์ถœ๋ฌธ์ œ] 6๋ฒˆ / ๋ฌผ ๋ถ€์กฑ

rtw0202 2025. 8. 28. 17:57

1. ๋ฌธ์ œ ์„ค๋ช…

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

  • [10, -10, 10, -10, 10, -10, 10, -10, 10, -10]
  • ๋ฆฌ์ŠคํŠธ์˜ ๊ฐ ์›์†Œ๋Š” ํ•ด๋‹น ์›”์˜ ๋ฌผ ์‚ฌ์šฉ๋Ÿ‰์ด ์ „ ๋‹ฌ์— ๋น„ํ•ด ๋ช‡ %๋งŒํผ ์ฆ๊ฐ€ ๋˜๋Š” ๊ฐ์†Œํ•˜๋Š”์ง€๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
  • ์˜ˆ๋ฅผ ๋“ค์–ด, ์ด๋ฒˆ๋‹ฌ์˜ ๋ฌผ ์‚ฌ์šฉ๋Ÿ‰ (๋ฆฌ์ŠคํŠธ์˜ ์ฒซ ๋ฒˆ์งธ ์›์†Œ)์€ ์ง€๋‚œ ๋‹ฌ ๋ณด๋‹ค 10% ์ฆ๊ฐ€ํ•œ ๊ฐ’์ด๋ฉฐ, ๋‹ค์Œ ๋‹ฌ(๋ฆฌ์ŠคํŠธ์˜ ๋‘ ๋ฒˆ์งธ ์›์†Œ)์˜ ๋ฌผ ์‚ฌ์šฉ๋Ÿ‰์€ ์ด๋ฒˆ๋‹ฌ ์‚ฌ์šฉ๋Ÿ‰์—์„œ 10%๋งŒํผ ๊ฐ์†Œํ•œ ๊ฐ’์ž…๋‹ˆ๋‹ค.

ํ˜„์žฌ ์ €์ˆ˜์ง€์— ์ €์žฅ๋œ ๋ฌผ์˜ ์–‘์„ ๋‚˜ํƒ€๋‚ด๋Š” ์ •์ˆ˜ storage์™€ ์ง€๋‚œ ๋‹ฌ ๋ฌผ ์‚ฌ์šฉ๋Ÿ‰์„ ๋‚˜ํƒ€๋‚ด๋Š” ์ •์ˆ˜ usage, ์›”๋ณ„ ๋ฌผ ์‚ฌ์šฉ๋Ÿ‰์ด ์ „ ๋‹ฌ ๋Œ€๋น„ ์–ด๋–ป๊ฒŒ ๋ณ€ํ•˜๋Š”์ง€ ์ €์žฅ๋œ ์ •์ˆ˜ ๋ฆฌ์ŠคํŠธ change๊ฐ€ ์ฃผ์–ด์งˆ ๋•Œ ๋ช‡ ๋‹ฌ ๋’ค ๋ฌผ์ด ๋ถ€์กฑํ•ด์ง€๋Š”์ง€ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•˜๋ ค ํ•ฉ๋‹ˆ๋‹ค. ์ฝ”๋“œ๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ž‘๋™ํ•˜๋„๋ก ํ•œ ์ค„์„ ์ˆ˜์ •ํ•ด solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด ์ฃผ์„ธ์š”. ๊ฐ€๋ญ„์ด ๋๋‚  ๋•Œ๊นŒ์ง€ ์ €์ˆ˜์ง€์˜ ๋ฌผ์ด ๋‚จ์•„ ์žˆ๋‹ค๋ฉด -1์„ returnํ•ฉ๋‹ˆ๋‹ค.

์ œํ•œ์‚ฌํ•ญ

  • 1,000 ≤ storage ≤ 1,000,000
  • 500 ≤ usage ≤30,000
  • 1 ≤ change์˜ ๊ธธ์ด ≤ 30
    • -99 ≤ change[i] ≤ 500
    • change[i]๊ฐ€ ์–‘์ˆ˜์ผ ๊ฒฝ์šฐ ๋ฌผ ์‚ฌ์šฉ๋Ÿ‰์€ ์ „ ๋‹ฌ๋ณด๋‹ค change[i]%๋งŒํผ ์ฆ๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
    • change[i]๊ฐ€ ์Œ์ˆ˜์ผ ๊ฒฝ์šฐ ๋ฌผ ์‚ฌ์šฉ๋Ÿ‰์€ ์ „ ๋‹ฌ๋ณด๋‹ค change[i]%๋งŒํผ ๊ฐ์†Œํ•ฉ๋‹ˆ๋‹ค.
    • change[i]๊ฐ€ 0์ผ ๊ฒฝ์šฐ ๋ฌผ ์‚ฌ์šฉ๋Ÿ‰์€ ์ „ ๋‹ฌ๊ณผ ๋™์ผํ•ฉ๋‹ˆ๋‹ค.
    • ๋งค๋‹ฌ ๋ฌผ ์‚ฌ์šฉ๋Ÿ‰์€ ์†Œ์ˆ˜์  ์ดํ•˜๋ฅผ ๋ฒ„๋ฆฐ ์ •์ˆ˜๋กœ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค.

 

2. ์ถœ๋ ฅ ์˜ˆ์‹œ

 

3. ๋ฌธ์ œ ๋‹ต์•ˆ

def solution(storage, usage, change):
    total_usage = 0
    for i in range(len(change)):
        usage = usage * (100 + change[i]) / 100 # ๋ณ€๊ฒฝ ์ „ usage = total_usage * change[i]/100
        total_usage += usage
        if total_usage > storage:
            return i
    
    return -1