-
<TIL> 2024-01-08내일배움캠프(데이터 분석 부트캠프 1기)/TIL & WIL 2024. 1. 8. 21:48
- 오늘 한 것
- 알고리즘 특강 수강
- Python 알고리즘 코드 카타
- 데이터 관련 도서 검색 및 구매
알고리즘 특강
오늘은 오전부터 알고리즘 특강을 수강하였다.
알고리즘은 특강은 이틀 간 진행되는데 오늘은 자료구조에 관련된 강의로 진행되었다.
학부 3학년 컴퓨터 공학 융합 전공을 복수전공 할 때 가장 애를 먹었던 자료구조 강의를 다시 마주하니
기억이 새록새록 나는 듯 나지 않는 듯 가물가물 한 듯 그랬다.
강의는 배열, 리스트, 스택, 큐 자료구조와 시간복잡도에 대해서 이야기하고
해당 자료구조에 해당하는 프로그래머스 문제 실습으로 진행되었다.
아래는 오늘 강의에서 과제로 제출되었던 스택 자료구조를 이용한 프로그래머스 코딩테스트 문제이다.
스택은 마지막에 들어온 element가 먼저 출력되는 LIFO(Last In First Out)구조로 이루어진 자료구조이다.
https://school.programmers.co.kr/learn/courses/30/lessons/12909
문제의 요구사항은 올바르게 괄호가 열고 닫힌 것인지를 확인하여 올바르면 True를 올바르지 않으면 False를 리턴하는 것이다.
원래 자료구조에서 배우는 문제 내용은 중괄호까지 포함된 아래 그림과 같은 문제인데 이 문제는 소괄호로만 구성된 약식 문제로 출제되었다.
문제 풀이는 다음과 같다.
스택이라는 문제 출제 취지에 맞게 리스트 맨 뒤에 element를 추가하는 push메소드와
리스트 맨 뒤의 element를 제거하는 pop 메소드를 따로 만들었다.
기본적으로 괄호가 열려있으면 스택에 쌓고, 열린 괄호가 닫힐 때 스택에 있던 열린 괄호를 pop하여 제거해주는 방식으로
코드를 진행하면 되는데 위에서 처럼 "()()" 의 String 데이터 형태로 괄호 데이터가 입력되므로
for문으로 String s의 인덱스를 순차 조회하는 방식으로 코드를 짰다.
반복문을 수행할 때 pop을 하려면 맨 위 스택에 쌓여있는 괄호가 무엇인지를 조회해야하는데
Python 리스트에서 [-1]인덱스를 조회하면 리스트 맨 뒤의 데이터를 조회할 수 있다.
그런데 이 때 리스트가 비어있다면 Index out of range error가 발생하게 되므로 해당 부분을 고려하여 If문으로
예외처리를 하고 괄호를 push하되 괄호가 완성되면 pop되도록 코드를 작성하였다.
def pop(list) : del list[-1] def push(list, element) : list.append(element) def solution(s): list = [] for i in range(len(s)) : # Index out of error 방지용 예외처리 # 스택이 비어있으면 무조건 push if not list : push(list, s[i]) # 스택이 비어있지 않으면 괄호 맨 위를 조회 else : # 열린 괄호가 스택 맨 위에 있을 때 if list[-1] == '(' : # 또 열린 괄호가 오면 push if s[i] == '(' : push(list, s[i]) # 닫힌 괄호가 오면 괄호 완성으로 pop else : pop(list) # 닫힌 스택의 맨 위에 있을 때는 push else : push(list, s[i]) # 위를 수행했을 때 리스트가 비어있으면 True, 리스트가 비어있지 않으면 False를 리턴 if not list : answer = True else : answer = False return answer
데이터 관련 도서 구매
데이터 관련 도서는 데이터 분석 공부하는 법 및 분석가 취업에 관련된 특강을 해주셨던
주정민 튜터님의 요즘 IT 아티클을 참고하여 추천도서 6권 중에
우선 데이터 문해력, 로지컬 씽킹, 그로스 해킹, 원인과 결과의 경제학 총 4권을 구매하였다.
앞으로 종종 시간 날 때 추천도서들을 읽고 정리하면서 데이터 분석가에게 필요한 역량을 키우고자 한다.
https://yozm.wishket.com/magazine/detail/1943/
'내일배움캠프(데이터 분석 부트캠프 1기) > TIL & WIL' 카테고리의 다른 글
<TIL> 2024-01-10 (0) 2024.01.10 <TIL> 2024-01-09 (0) 2024.01.09 <WIL> 2024년 1월 1주차 회고 (0) 2024.01.05 <TIL> 2024-01-05 (0) 2024.01.05 <TIL> 2024-01-04 (2) 2024.01.04 - 오늘 한 것