# ๋ฐ์ดํฐ ๋ถ์ # 250121๋ฒ # lv1
# ๋ฌธ์
AI ์์ง๋์ด์ธ ํ์์ด๋ ๋ฐ์ดํฐ๋ฅผ ๋ถ์ํ๋ ์์ ์ ์งํํ๊ณ ์์ต๋๋ค. ๋ฐ์ดํฐ๋ ["์ฝ๋ ๋ฒํธ(code)", "์ ์กฐ์ผ(date)", "์ต๋ ์๋(maximum)", "ํ์ฌ ์๋(remain)"]์ผ๋ก ๊ตฌ์ฑ๋์ด ์์ผ๋ฉฐ ํ์์ด๋ ์ด ๋ฐ์ดํฐ๋ค ์ค ์กฐ๊ฑด์ ๋ง์กฑํ๋ ๋ฐ์ดํฐ๋ง ๋ฝ์์ ์ ๋ ฌํ๋ ค ํฉ๋๋ค. ์๋ฅผ ๋ค์ด ๋ค์๊ณผ ๊ฐ์ด ๋ฐ์ดํฐ๊ฐ ์ฃผ์ด์ง๋ค๋ฉด
data = [[1, 20300104, 100, 80], [2, 20300804, 847, 37], [3, 20300401, 10, 8]]
์ฃผ์ด์ง ๋ฐ์ดํฐ ์ค "์ ์กฐ์ผ์ด 20300501 ์ด์ ์ธ ๋ฌผ๊ฑด๋ค์ ํ์ฌ ์๋์ด ์ ์ ์์"๋ก ์ ๋ ฌํด์ผ ํ๋ค๋ฉด ์กฐ๊ฑด์ ๋ง๊ฒ ๊ฐ๊ณต๋ ๋ฐ์ดํฐ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
data = [[3,20300401,10,8],[1,20300104,100,80]]
์ ๋ ฌํ ๋ฐ์ดํฐ๋ค์ด ๋ด๊ธด ์ด์ฐจ์ ์ ์ ๋ฆฌ์คํธ data์ ์ด๋ค ์ ๋ณด๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ฝ์๋ผ์ง๋ฅผ ์๋ฏธํ๋ ๋ฌธ์์ด ext, ๋ฝ์๋ผ ์ ๋ณด์ ๊ธฐ์ค๊ฐ์ ๋ํ๋ด๋ ์ ์ val_ext, ์ ๋ณด๋ฅผ ์ ๋ ฌํ ๊ธฐ์ค์ด ๋๋ ๋ฌธ์์ด sort_by๊ฐ ์ฃผ์ด์ง๋๋ค.
data์์ ext ๊ฐ์ด val_ext๋ณด๋ค ์์ ๋ฐ์ดํฐ๋ง ๋ฝ์ ํ, sort_by์ ํด๋นํ๋ ๊ฐ์ ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ์ฌ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด ์ฃผ์ธ์. ๋จ, ์กฐ๊ฑด์ ๋ง์กฑํ๋ ๋ฐ์ดํฐ๋ ํญ์ ํ ๊ฐ ์ด์ ์กด์ฌํฉ๋๋ค.
์
์ถ๋ ฅ ์ #1
data
[[1, 20300104, 100, 80], [2, 20300804, 847, 37], [3, 20300401, 10, 8]]
ext
"date"
val_ext
20300501
sort_by
"remain"
result
[[3,20300401,10,8],[1,20300104,100,80]]
# ํ์ด
# ํ์ด1
def solution(data, ext, val_ext, sort_by):
# ext = '์ด๋ค ์ ๋ณด๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ฐ์ดํฐ ๋ฝ์ ์ง'
# val_ext = '๋ฝ์์จ ์ ๋ณด์ ๊ธฐ์ค๊ฐ์ ๋ํ๋ด๋ ์ ์'
# sort_by = '์ ๋ณด๋ฅผ ์ ๋ ฌํ ๊ธฐ์ค'
# data์์ ext๋ฅผ ์ถ์ถํ๊ณ val_ext ๋ณด๋ค ์์ผ๋ฉด da ๋ฆฌ์คํธ๋ฅผ tmp_list์ ๋ํจ.
if ext == 'code':
tmp_list = [da for da in data if da[0] < val_ext]
elif ext == 'date':
tmp_list = [da for da in data if da[1] < val_ext]
elif ext == 'maximum':
tmp_list = [da for da in data if da[2] < val_ext]
elif ext == 'remain':
tmp_list = [da for da in data if da[3] < val_ext]
# sort_by์ ์ด๋ฆ์ ๋ฐ๋ผ idx ๊ฐ ์ค์ .
if sort_by == 'remain': idx = 3
elif sort_by == 'maximum': idx = 2
elif sort_by == 'date': idx = 1
elif sort_by == 'code': idx = 0
# sorted ํจ์์ key๊ฐ์ผ๋ก tmp_data[idx]๋ฅผ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌ.
return sorted(tmp_list, key = lambda tmp_data : tmp_data[idx])
# ํ์ด2
def solution(data, ext, val_ext, sort_by):
tmp_list = []
if sort_by == 'remain':
idx = 3
elif sort_by == 'maximum':
idx = 2
elif sort_by == 'date':
idx = 1
elif sort_by == 'code':
idx = 0
for i in range(len(data)):
da = data[i]
code, date, maxi, rema = da[0], da[1], da[2], da[3]
if ext == 'code':
if code < val_ext: tmp_list.append(da)
else: pass
elif ext == 'date':
if date < val_ext: tmp_list.append(da)
else: pass
elif ext == 'maximum':
if maxi < val_ext: tmp_list.append(da)
else: pass
elif ext == 'remain':
if rema < val_ext: tmp_list.append(da)
else: pass
return sorted(tmp_list, key = lambda tmp_data : tmp_data[idx])
""" ๊ทธ๋ฅ ์ด์์ง ์์ ์ฝ๋.ํจ์จ์ฑ-๋ฉ๋ชจ๋ฆฌ ์ธก๋ฉด์์ ๊ฝค ์ข์์. ์์ธ์ฒ๋ฆฌ๊ฐ ๋น ๋ฅด๊ฒ ๋๊ณ , ๋ฆฌ์คํธ
์์ ๋ด๋ถ๋ฅผ ๋ด๋ถ์ ์ผ๋ก ๋ค ๋ค์ฌ๋ค๋ณผ ํ์๊ฐ ์๋ค๋ณด๋ ๊ทธ๋ฐ ๋ฏํจ. """
'Python > ๐ ์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
# ๋ฐ์ดํฐ ๋ถ์ # 250121๋ฒ # lv1
# ๋ฌธ์
AI ์์ง๋์ด์ธ ํ์์ด๋ ๋ฐ์ดํฐ๋ฅผ ๋ถ์ํ๋ ์์ ์ ์งํํ๊ณ ์์ต๋๋ค. ๋ฐ์ดํฐ๋ ["์ฝ๋ ๋ฒํธ(code)", "์ ์กฐ์ผ(date)", "์ต๋ ์๋(maximum)", "ํ์ฌ ์๋(remain)"]์ผ๋ก ๊ตฌ์ฑ๋์ด ์์ผ๋ฉฐ ํ์์ด๋ ์ด ๋ฐ์ดํฐ๋ค ์ค ์กฐ๊ฑด์ ๋ง์กฑํ๋ ๋ฐ์ดํฐ๋ง ๋ฝ์์ ์ ๋ ฌํ๋ ค ํฉ๋๋ค. ์๋ฅผ ๋ค์ด ๋ค์๊ณผ ๊ฐ์ด ๋ฐ์ดํฐ๊ฐ ์ฃผ์ด์ง๋ค๋ฉด
data = [[1, 20300104, 100, 80], [2, 20300804, 847, 37], [3, 20300401, 10, 8]]
์ฃผ์ด์ง ๋ฐ์ดํฐ ์ค "์ ์กฐ์ผ์ด 20300501 ์ด์ ์ธ ๋ฌผ๊ฑด๋ค์ ํ์ฌ ์๋์ด ์ ์ ์์"๋ก ์ ๋ ฌํด์ผ ํ๋ค๋ฉด ์กฐ๊ฑด์ ๋ง๊ฒ ๊ฐ๊ณต๋ ๋ฐ์ดํฐ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
data = [[3,20300401,10,8],[1,20300104,100,80]]
์ ๋ ฌํ ๋ฐ์ดํฐ๋ค์ด ๋ด๊ธด ์ด์ฐจ์ ์ ์ ๋ฆฌ์คํธ data์ ์ด๋ค ์ ๋ณด๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ฝ์๋ผ์ง๋ฅผ ์๋ฏธํ๋ ๋ฌธ์์ด ext, ๋ฝ์๋ผ ์ ๋ณด์ ๊ธฐ์ค๊ฐ์ ๋ํ๋ด๋ ์ ์ val_ext, ์ ๋ณด๋ฅผ ์ ๋ ฌํ ๊ธฐ์ค์ด ๋๋ ๋ฌธ์์ด sort_by๊ฐ ์ฃผ์ด์ง๋๋ค.
data์์ ext ๊ฐ์ด val_ext๋ณด๋ค ์์ ๋ฐ์ดํฐ๋ง ๋ฝ์ ํ, sort_by์ ํด๋นํ๋ ๊ฐ์ ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ์ฌ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด ์ฃผ์ธ์. ๋จ, ์กฐ๊ฑด์ ๋ง์กฑํ๋ ๋ฐ์ดํฐ๋ ํญ์ ํ ๊ฐ ์ด์ ์กด์ฌํฉ๋๋ค.
์
์ถ๋ ฅ ์ #1
data
[[1, 20300104, 100, 80], [2, 20300804, 847, 37], [3, 20300401, 10, 8]]
ext
"date"
val_ext
20300501
sort_by
"remain"
result
[[3,20300401,10,8],[1,20300104,100,80]]
# ํ์ด
# ํ์ด1
def solution(data, ext, val_ext, sort_by):
# ext = '์ด๋ค ์ ๋ณด๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ฐ์ดํฐ ๋ฝ์ ์ง'
# val_ext = '๋ฝ์์จ ์ ๋ณด์ ๊ธฐ์ค๊ฐ์ ๋ํ๋ด๋ ์ ์'
# sort_by = '์ ๋ณด๋ฅผ ์ ๋ ฌํ ๊ธฐ์ค'
# data์์ ext๋ฅผ ์ถ์ถํ๊ณ val_ext ๋ณด๋ค ์์ผ๋ฉด da ๋ฆฌ์คํธ๋ฅผ tmp_list์ ๋ํจ.
if ext == 'code':
tmp_list = [da for da in data if da[0] < val_ext]
elif ext == 'date':
tmp_list = [da for da in data if da[1] < val_ext]
elif ext == 'maximum':
tmp_list = [da for da in data if da[2] < val_ext]
elif ext == 'remain':
tmp_list = [da for da in data if da[3] < val_ext]
# sort_by์ ์ด๋ฆ์ ๋ฐ๋ผ idx ๊ฐ ์ค์ .
if sort_by == 'remain': idx = 3
elif sort_by == 'maximum': idx = 2
elif sort_by == 'date': idx = 1
elif sort_by == 'code': idx = 0
# sorted ํจ์์ key๊ฐ์ผ๋ก tmp_data[idx]๋ฅผ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌ.
return sorted(tmp_list, key = lambda tmp_data : tmp_data[idx])
# ํ์ด2
def solution(data, ext, val_ext, sort_by):
tmp_list = []
if sort_by == 'remain':
idx = 3
elif sort_by == 'maximum':
idx = 2
elif sort_by == 'date':
idx = 1
elif sort_by == 'code':
idx = 0
for i in range(len(data)):
da = data[i]
code, date, maxi, rema = da[0], da[1], da[2], da[3]
if ext == 'code':
if code < val_ext: tmp_list.append(da)
else: pass
elif ext == 'date':
if date < val_ext: tmp_list.append(da)
else: pass
elif ext == 'maximum':
if maxi < val_ext: tmp_list.append(da)
else: pass
elif ext == 'remain':
if rema < val_ext: tmp_list.append(da)
else: pass
return sorted(tmp_list, key = lambda tmp_data : tmp_data[idx])
""" ๊ทธ๋ฅ ์ด์์ง ์์ ์ฝ๋.ํจ์จ์ฑ-๋ฉ๋ชจ๋ฆฌ ์ธก๋ฉด์์ ๊ฝค ์ข์์. ์์ธ์ฒ๋ฆฌ๊ฐ ๋น ๋ฅด๊ฒ ๋๊ณ , ๋ฆฌ์คํธ
์์ ๋ด๋ถ๋ฅผ ๋ด๋ถ์ ์ผ๋ก ๋ค ๋ค์ฌ๋ค๋ณผ ํ์๊ฐ ์๋ค๋ณด๋ ๊ทธ๋ฐ ๋ฏํจ. """