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

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] [Python] [PCCE ๊ธฐ์ถœ๋ฌธ์ œ] 10๋ฒˆ / ๋ฐ์ดํ„ฐ ๋ถ„์„

rtw0202 2026. 3. 1. 19:12

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

AI ์—”์ง€๋‹ˆ์–ด์ธ ํ˜„์‹์ด๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„์„ํ•˜๋Š” ์ž‘์—…์„ ์ง„ํ–‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋Š” ["์ฝ”๋“œ ๋ฒˆํ˜ธ(code)", "์ œ์กฐ์ผ(date)", "์ตœ๋Œ€ ์ˆ˜๋Ÿ‰(maximum)", "ํ˜„์žฌ ์ˆ˜๋Ÿ‰(remain)"]์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์œผ๋ฉฐ ํ˜„์‹์ด๋Š” ์ด ๋ฐ์ดํ„ฐ๋“ค ์ค‘ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ๋ฐ์ดํ„ฐ๋งŒ ๋ฝ‘์•„์„œ ์ •๋ ฌํ•˜๋ ค ํ•ฉ๋‹ˆ๋‹ค.

์ •๋ ฌํ•œ ๋ฐ์ดํ„ฐ๋“ค์ด ๋‹ด๊ธด ์ด์ฐจ์› ์ •์ˆ˜ ๋ฆฌ์ŠคํŠธ data์™€ ์–ด๋–ค ์ •๋ณด๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฝ‘์•„๋‚ผ์ง€๋ฅผ ์˜๋ฏธํ•˜๋Š” ๋ฌธ์ž์—ด ext, ๋ฝ‘์•„๋‚ผ ์ •๋ณด์˜ ๊ธฐ์ค€๊ฐ’์„ ๋‚˜ํƒ€๋‚ด๋Š” ์ •์ˆ˜ val_ext, ์ •๋ณด๋ฅผ ์ •๋ ฌํ•  ๊ธฐ์ค€์ด ๋˜๋Š” ๋ฌธ์ž์—ด sort_by๊ฐ€ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค.

data์—์„œ ext ๊ฐ’์ด val_ext๋ณด๋‹ค ์ž‘์€ ๋ฐ์ดํ„ฐ๋งŒ ๋ฝ‘์€ ํ›„, sort_by์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜์—ฌ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด ์ฃผ์„ธ์š”. ๋‹จ, ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ๋ฐ์ดํ„ฐ๋Š” ํ•ญ์ƒ ํ•œ ๊ฐœ ์ด์ƒ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

์ œํ•œ์‚ฌํ•ญ

  • 1 ≤ data์˜ ๊ธธ์ด ≤ 500
    • data[i]์˜ ์›์†Œ๋Š” [์ฝ”๋“œ ๋ฒˆํ˜ธ(code), ์ œ์กฐ์ผ(date), ์ตœ๋Œ€ ์ˆ˜๋Ÿ‰(maximum), ํ˜„์žฌ ์ˆ˜๋Ÿ‰(remain)] ํ˜•ํƒœ์ž…๋‹ˆ๋‹ค.
    • 1 ≤ ์ฝ”๋“œ ๋ฒˆํ˜ธ≤ 100,000
    • 20000101 ≤ ์ œ์กฐ์ผ≤ 29991231
    • data[i][1]์€ yyyymmdd ํ˜•ํƒœ์˜ ๊ฐ’์„ ๊ฐ€์ง€๋ฉฐ, ์˜ฌ๋ฐ”๋ฅธ ๋‚ ์งœ๋งŒ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค. (yyyy : ์—ฐ๋„, mm : ์›”, dd : ์ผ)
    • 1 ≤ ์ตœ๋Œ€ ์ˆ˜๋Ÿ‰≤ 10,000
    • 1 ≤ ํ˜„์žฌ ์ˆ˜๋Ÿ‰≤ ์ตœ๋Œ€ ์ˆ˜๋Ÿ‰
  • ext์™€ sort_by์˜ ๊ฐ’์€ ๋‹ค์Œ ์ค‘ ํ•œ ๊ฐ€์ง€๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค.
    • "code", "date", "maximum", "remain"
    • ์ˆœ์„œ๋Œ€๋กœ ์ฝ”๋“œ ๋ฒˆํ˜ธ, ์ œ์กฐ์ผ, ์ตœ๋Œ€ ์ˆ˜๋Ÿ‰, ํ˜„์žฌ ์ˆ˜๋Ÿ‰์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
  • val_ext๋Š” ext์— ๋”ฐ๋ผ ์˜ฌ๋ฐ”๋ฅธ ๋ฒ”์œ„์˜ ์ˆซ์ž๋กœ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค.
  • ์ •๋ ฌ ๊ธฐ์ค€์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ’์ด ์„œ๋กœ ๊ฐ™์€ ๊ฒฝ์šฐ๋Š” ์—†์Šต๋‹ˆ๋‹ค.

 

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

 

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

def solution(data, ext, val_ext, sort_by):
    answer = []
    
    # ์ธ๋ฑ์Šค ํ• ๋‹น
    def set_index(col):
        if col == 'code':
            return 0
        elif col == 'date':
            return 1
        elif col == 'maximum':
            return 2
        elif col == 'remain':
            return 3
        
    # ์กฐ๊ฑด์— ๋งž๋Š” ๋ฐ์ดํ„ฐ
    ext_index = set_index(ext)
    for d in data:
        if d[ext_index] < val_ext:
            answer.append(d)
        
    # ์ •๋ ฌ
    sort_index = set_index(sort_by)
    answer.sort(key=lambda x: x[sort_index])
               
    return answer