미래내일일경험 - 빅리더(23.06~23.12)/교육

[빅리더]6/26(월) TIL

NINE1ll 2023. 6. 26. 22:38

- 알고리즘  & 자료구조

자료구조와 알고리즘을 배우는 이유는 단순하게 비유하면

과연 책을 쌓아두는 것이 꺼낼 때 편할까, 책을 책장에 넣어 두는 것이 편할까?

생각해보면 책장에 넣어두는 것이 편하다. 

이처럼 우리는 자료구조와 사용법을 배우고 어떤 경우에 조금 더 편할까? 를 고민해보기 위해 알고리즘과 자료구조를 배우는 것이다.

1. 스택 (Stack)

최근에 (3-1학기) 컴퓨터 아키텍쳐에서 0주소 방법에서 사용하던 스택이다. 후입선출(LIFO)의 구조를 가지고 있다. 단순하게 생각하면 길고 좁은 컵에 큰 사각얼음을 계속 채운다고 생각하면 편하다. 

얼을을 넣는 과정을 Push, 얼음을 빼는 과정을 Pop이라고 한다. 

간단하게 list로 구현해보면

x = []

x.append('O')
x.append('ㅅ')
x.append('X')

x.pop() #X

이런식이 된다.


2. 큐(Queue)

선입선출(FIFO)의 구조를 가진 친구다. 대기 행렬이라고도 한다. 간단하게 예시를 들어보면 1인승 에스컬레이터라고 생각하면 편하다.


둘이 사용되어야하는 상황을 생각해보자

1) 놀이기구를 타기 위해 줄을 서는 경우

2) 맨 마지막에 넣은 원소가 궁금한 경우


파이썬 기초 - 오늘 배운 코드 중에 맨날 구글링해서 사용하는 open관련, 재미있는거 발견해서 몇 글자 끄적인다.

그리고 약간 궁금한게 보통 판다스 사용해서 파일 읽어오지 않나..? 아니 그냥 궁금해서

일단 재미있는거 먼저 

- string.startswith(string, index)

말 그대로 starts with 다 어떤 것으로 시작하는지 찾아준다 예시 코드로는 

a_string = "the quick brown fox jumps over the lazy dog. the quick brown fox jumps over the lazy dog"
a = input("Please input string that you want to remove. : ")

print(a_string.split(a))
indices = [index for index in range(len(a_string)) if a_string.startswith(a, index)]
if(len(indices)!=0):
    for i in indices:
        print(a_string[i:i+len(a)])
 
 
 ```
 Please input string that you want to remove. : brown
['the quick ', ' fox jumps over the lazy dog. the quick ', ' fox jumps over the lazy dog']
brown
brown
 ```

뭐 이런식으로 시작되는 곳의 index를 반환해서 간단하게 그걸로 잘라봤다. 왜냐고? 어 그냥 split 배워서 

- open

sum = 0
scores = [70,60,55,75,95,90,80,80,85,100]
with open('score.txt',"w") as f:
    for score in scores:
        f.write(f"{score}\n")

with open('score.txt',"r") as f:
    t4 = f.readlines()
    
for score in t4:
    sum += int(score.strip())
    
mean = sum/len(scores)
mean

그냥 파일 쓰고 읽고 간단하게 사용한 예제다.