-
๐ฅ๏ธ Computer science/: Data Structure
[์๋ฃ๊ตฌ์กฐ] ์ ํ๋ฆฌ์คํธ(liner list)=์์ฐจ ๋ฆฌ์คํธ(Sequential List)์ ๊ฐ๋ ๊ณผ ๊ตฌํ by python
2024. 1. 26.
์ ํ ๋ฆฌ์คํธ
์ ํ๋ฆฌ์คํธ์ ๊ธฐ๋ณธ
์ ํ ๋ฆฌ์คํธ์ ๊ฐ๋
- ๋ฐ์ดํฐ๋ฅผ ์ผ์ ํ ์์๋ก ๋์ดํ ์๋ฃ๊ตฌ์กฐ์ด๋ค.
- =์์ฐจ ๋ฆฌ์คํธ(Ordered List)
- ์ ๋ ฅ ์์๋๋ก ์ ์ฅํ๋ ๋ฐ์ดํฐ์ ์ ํฉํ๋ค.
- ๊ตฌํํ๋ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ๋ฐฉ๋ฒ์ ๋ฐฐ์ด์ ์ด์ฉํ๋ ๊ฒ์ด๋ค. (ํ์ด์ฌ์ ์๋ฃํ์์๋ List)
- ์ปดํจํฐ ๋ฉ๋ชจ๋ฆฌ์์๋ ์ ์ฅ๋ ๋ ์์ ์์น๋ถํฐ ์์ฐจ์ ์ผ๋ก, ๋น์๋ฆฌ ์์ด ์ ์ฅ๋๋ค.
์ ํ๋ฆฌ์คํธ์ ์๋ฆฌ
๋ฐ์ดํฐ ์ฝ์
- ์๋ก์ด ์์๋ฅผ ์ฝ์ ํ๋ ค๋ฉด, ์ฝ์ ํ ์๋ฆฌ๋ฅผ ๋ง๋ค๊ธฐ ์ํด, ์ฝ์ ํ ์์น ์ดํ์ ์์๋ค์ ๋ชจ๋ ํ ์๋ฆฌ์ฉ ๋ค๋ก ์ฎ๊ฒจ์ผํ๋ค.
- โ ์์๋ฅผ ์ฝ์ ํ ๋น ์๋ฆฌ ๋ง๋ค๊ธฐ (์ฝ์ ํ ์๋ฆฌ ์ดํ์ ์์๋ค์ ํ ์นธ์ฉ ๋ค๋ก ์ด๋)
- โก ๋น ์๋ฆฌ์ ์์ ์ฝ์ ํ๊ธฐ
์ฝ์ ํ ์๋ฆฌ๋ฅผ ๋ง๋ค๊ธฐ ์ํ ์๋ฆฌ ์ด๋ ํ์
- N ๊ฐ์ ์์๋ก ์ด๋ฃจ์ด์ง ์ ํ ๋ฆฌ์คํธ์์ ์ธ๋ฑ์ค K์ ์์๋ฅผ ์ฝ์ ํ๋ ๊ฒฝ์ฐ
- ๋ง์ง๋ง ์์์ ์ธ๋ฑ์ค - ์ฝ์ ํ ์๋ฆฌ์ ์ธ๋ฑ์ค + 1 -> (N - 1) - K + 1
๋ฐ์ดํฐ ์ญ์
- ์์๋ฅผ ์ญ์ ํ๋ ค๋ฉด, ์ญ์ ํ ์ดํ์ ๋น์๋ฆฌ๋ฅผ ์ฑ์์ฃผ๊ธฐ ์ํด , ์ญ์ ํ ์์น ์ดํ์ ์์๋ค์ ๋ชจ๋ ํ ์๋ฆฌ์ฉ ์์ผ๋ก ์ฎ๊ฒจ์ผํ๋ค.
- โ ์์ ์ญ์ ํ๊ธฐ
- โก ์ญ์ ํ ๋น ์๋ฆฌ ์ฑ์ฐ๊ธฐ (์ญ์ ํ ์๋ฆฌ ์ดํ์ ์์๋ค์ ํ ์นธ์ฉ ์์ผ๋ก ์ด๋)
์ญ์ ํ, ๋น ์๋ฆฌ๋ฅผ ์ฑ์ฐ๊ธฐ ์ํ ์๋ฆฌ ์ด๋ ํ์
- N๊ฐ์ ์์๋ก ์ด๋ฃจ์ด์ง ์ ํ ๋ฆฌ์คํธ์์ ์ธ๋ฑ์ค K์ ์์๋ฅผ ์ญ์ ํ๋ ๊ฒฝ์ฐ
- ๋ง์ง๋ง ์์์ ์ธ๋ฑ์ค - ์ญ์ ํ ์๋ฆฌ์ ์ธ๋ฑ์ค -> (N - 1) - K
๋ฐ์ดํฐ ํ์
- ์์ฐจ ๋ฆฌ์คํธ๋ ๋ฐฐ์ด๋ก ๊ตฌํํ๋ฏ๋ก ์ธ๋ฑ์ค๋ฅผ ํตํด ์์๋ฅผ ํ์ํ ์ ์๋ค.
์์ฐจ ๋ฆฌ์คํธ๋ ์ฝ์ , ์ญ์ ์๋ ๋นํจ์จ์ ์ด์ง๋ง ํ์์๋ ํจ์จ์ ์ด๋ค!
์ ํ๋ฆฌ์คํธ์ ๊ตฌํ
- ์ฌ์ฉ์๊ฐ ์ ๋ ฅํ๋ ๋ฐ์ดํฐ๊ฐ ๊ฐ๋ณ์ ์ผ๋ก ์๋ํ๋ ๋ฒ์ฉ์ ์ฝ๋๋ฅผ ์์ฑํด๋ณด์.
- ๋ฐฐ์ด์ ๋งจ ๋ ์์น๋ len(๋ฐฐ์ด์ด๋ฆ)-1๋ก ๊ตฌํ ์ ์๋ค.
๋งจ ๋ค ์ฝ์
1๏ธโฃ ๋ฐฐ์ด ๋งจ๋ค์ ๋น์นธ ์ถ๊ฐ
2๏ธโฃ ๋ฐฐ์ด ๊ธธ์ด ํ์ธ
3๏ธโฃ (๋ฐฐ์ด ๊ธธ์ด-1) ์์น์ ๋ฐ์ดํฐ ์ฝ์
์ค๊ฐ ๋ฐ์ดํฐ ์ฝ์
1๏ธโฃ ์ ํ ๋ฆฌ์คํธ์ ๋น์นธ์ ์ถ๊ฐ
2๏ธโฃ n๋ฒ์งธ(๋ง์ง๋ง) ์๋ฆฌ์ n-1๋ฒ์จฐ ๊ฐ์์ ๋ฃ๊ณ , n-1๋ฒ์จฐ๋ฅผ ๋น์นธ์ผ๋ก ๋ง๋ ๋ค
3๏ธโฃ ์ง์ ์์น ์นธ์ผ๋ก ์๋ํ ๋๊น์ง ์ ๊ณผ์ ์ ๋ฐ๋ณต ⇒ for๋ฌธ ์ด์ฉ
4๏ธโฃ ์ง์ ์์น ์นธ์ ์๋ก์ด ๊ฐ์ ์ฝ์
๋ฐ์ดํฐ ์ญ์
1๏ธโฃ ์ง์ ์์น(x)์ ๋ฐ์ดํฐ๋ฅผ ์ญ์
2๏ธโฃ ์ง์ ์์น ๋ฐ๋ก ๋ค์(x+1)์ ๋ฐ์ดํฐ๋ฅผ ์ง์ ์์น(x) ์๋ฆฌ๋ก ์ด๋ํ๊ณ x+1์๋ฆฌ๋ ๋น์นธ์ผ๋ก ๋ง๋ ๋ค.
3๏ธโฃ ๋ฐฐ์ด์ ๋ง์ง๋ง ์์น๋ก ์ด๋ํ ๋๊น์ง ์ ๊ณผ์ ์ ๋ฐ๋ณตํ๋ค ⇒ for๋ฌธ
4๏ธโฃ ๋ฐฐ์ด์ ๋งจ ๋ง์ง๋ง ์์น๋ฅผ ์์ ํ ์ ๊ฑฐํ๋ค.
#์ ํ ์คํธ = ์์ฐจ ๋ฆฌ์คํธ (์ ๋ ฅ ์์๋๋ก ์ ์ฅ) ์ฒ๋ฆฌ ํ๋ก๊ทธ๋จ #[1] ๋ฐ์ดํฐ ์ฝ์ #๋ฐฐ์ด ์ ์ธ ์ ํ๋ฆฌ์คํธ ์์ฑ -> ํ์ด์ฌ ๋ฐฐ์ด๋ก katok=[] select=0 # ๋ฐ์ดํฐ ์ฝ์ ํจ์ def add_data(friend): katok.append(None) length=len(katok) katok[length-1]=friend add_data("์ฑ๋ฏผ") add_data("๋คํ") add_data("๋์ฐ") add_data("๋ํ") add_data("๋ฏผ์") print(katok) # ๋ฐ์ดํฐ ์ฝ์ ํจ์ def insert_data(position,friend): if position<0 or position>len(katok): print("๋ฐ์ดํฐ๋ฅผ ์ฝ์ ํ ๋ฒ์๋ฅผ ๋ฒ์ด๋ฌ์ต๋๋ค.") return katok.append(None) #๋น ์๋ฆฌ ์ฝ์ length=len(katok) #ํ์ฌ ๋ฐฐ์ด์ ํฌ๊ธฐ for i in range(length-1,position,-1): katok[i]=katok[i-1] # ๋น ์๋ฆฌ์ ๊ตํํด์ ๋ค๋ก ๋ณด๋ด๊ธฐ katok[i-1]=None #์๋ ์๋ฆฌ๋ฅผ ๋น์นธ์ผ๋ก katok[position]=friend #์ง์ ํ ์์น์ ์๋ก์ด ๊ฐ ์ถ๊ฐ print(katok) # for i in range(๊ฐ1, ๊ฐ2, ๊ฐ3)์์ ๊ฐ1๊ณผ ๊ฐ2๊ฐ ๊ฐ์ผ๋ฉด ํ ๋ฒ๋ ์ํํ์ง ์๋๋ค. #์๋ ํ ์คํธ insert_data(3,'๋ค์') #[2] ๋ฐ์ดํฐ ์ญ์ # ๋ฐ์ดํฐ ์ญ์ ํจ์ def delete_data(position): if position<0 or position>len(katok): print("๋ฐ์ดํฐ๋ฅผ ์ฝ์ ํ ๋ฒ์๋ฅผ ๋ฒ์ด๋ฌ์ต๋๋ค.") return length=len(katok) #ํ์ฌ ๋ฐฐ์ด์ ํฌ๊ธฐ katok[position]=None # ๋ฐ์ดํฐ ์ญ์ for i in range(position+1,length): katok[i-1]=katok[i] # ๋ค์ ๊ฐ์ ์์ผ๋ก ๋ก๊ฒจ์ด katok[i]=None #๋ท์๋ฆฌ๋ฅผ ๋ค์ ๋น์นธ์ผ๋ก del(katok[length-1]) print(katok) delete_data(2) # ๋ฉ์ธ์ฝ๋ if __name__=="__main__": # ๋ชจ๋์ด ์๋ ํ์ด์ฌ ํ์ผ์ ์ง์ ์คํํ์ ๋๋ง ์๋ ์ฝ๋๋ฅผ ์คํ while (select!=4): select=int(input("๋ฉ๋ด๋ฅผ ์ ํํ์ธ์. 1: ์ถ๊ฐ, 2: ์ฝ์ , 3:์ญ์ , 4:์ข ๋ฃ")) if (select==1): data=input("์ถ๊ฐํ ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฅํ์ธ์.") add_data(data) if (select==2): pos=int(input("์ฝ์ ํ ์์น๋ฅผ ์ ๋ ฅํ์ธ์.")) data=input("์ฝ์ ํ ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฅํ์ธ์.") insert_data(pos,data) if(select==3): pos=input("์ญ์ ํ ๋ฐ์ดํฐ์ ์์น๋ฅผ ์ ๋ ฅํ์ธ์.") delete_data(pos) elif(select==4): print(katok) exit 2 else: print("1~4 ์ค ํ๋๋ฅผ ์ ๋ ฅํ์ธ์.")
์ ํ ๋ฆฌ์คํธ์ ์์ฉ
- ์ ํ ๋ฆฌ์คํธ๋ ๋คํญ์์ ์ ์ฅํ๊ณ ํ์ฉํ๋ ๋ฐ์ ๋ง์ด ์์ฉ๋๋ค.
๋คํญ์์ ์ ํ ๋ฆฌ์คํธ ํํ๊ณผ ๊ณ์ฐ ํ๋ก๊ทธ๋จ
## ํจ์ ์ ์ธ ๋ถ๋ถ ## def printPoly(t_x, p_x) : polyStr = "P(x) = " for i in range(len(p_x)) : term = t_x[i] # ํญ ์ฐจ์ coef = p_x[i] # ๊ณ์ if (coef >= 0) : polyStr += "+" polyStr += str(coef) + "x^" + str(term) + " " return polyStr def calcPoly(xVal, t_x, p_x) : retValue = 0 for i in range(len(px)) : term = t_x[i] # ํญ ์ฐจ์ coef = p_x[i] # ๊ณ์ retValue += coef * xValue ** term return retValue ## ์ ์ญ ๋ณ์ ์ ์ธ ๋ถ๋ถ ## tx = [300, 20, 0] px = [7, -4, 5] ## ๋ฉ์ธ ์ฝ๋ ๋ถ๋ถ ## if __name__ == "__main__" : pStr = printPoly(tx, px) print(pStr) xValue = int(input("X ๊ฐ-->")) pxValue = calcPoly(xValue, tx, px) print(pxValue)## ํจ์ ์ ์ธ ๋ถ๋ถ ##
์ฐธ๊ณ
'๐ฅ๏ธ Computer science > : Data Structure' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์๋ฃ๊ตฌ์กฐ] ์๋ฃ๊ตฌ์กฐ์ ์ข ๋ฅ (0) 2024.01.24 ๋๊ธ