20210614
오늘 한 일
- 그래프 책 읽기 basic concepts in data structure
- 달랩 출근
- 메이져 기업 취업을 위한 계획 세우기 - https://velog.io/@gringrape200/%EA%B3%84%ED%9A%8D
- 코딩 도장 크레인 인형뽑기
- 코딩 도장 문제풀이에서 부족했던 부분 학습 - zip,
- 인수인계 문서 작성 시작
https://velog.io/@gringrape200/%EC%9D%B8%EC%88%98%EC%9D%B8%EA%B3%84 - MP 에서 수행한 일들 이슈 링크 모으기 - https://docs.google.com/document/d/1MQXcgqb7B1XoVJLDjLK6RcBH-3g_1-X52C-dRx_rkFo/edit
- OKR 및 목표 세우는 페이지 생성 https://www.notion.so/madmax2021/d7fee94c695e467e8cc275ced7c90bc9
- BFS 개념을 익히기 위한 문제풀이
https://leetcode.com/problems/maximum-depth-of-n-ary-tree/ - BFS 개념을 적용하여 프로그래머스 문제풀이 - 프로그래머스 게임 맵 최단거리
문제: https://programmers.co.kr/learn/courses/30/lessons/1844
저장소: https://github.com/gringrape/daily_coding_dojo/tree/main/20210614/python2 - trio 스터디 - https://github.com/gringrape-juice/trio
목표
BFS, 다익스트라
아샬님 아침 질문 & 강의
- 해시 테이블의 정체는 뭔가?
- 자료구조를 만들면 하는 일 - 순회와 탐색
- 이진탐색을 그냥 할 수도 있고 자료구조로 만들어서 넣어놓을 수 있는데 넣어놓는 것을 이진탐색트리라고 한다.
- 시간 복잡도는 - n x n , n x log(n) => 이거 두개가 이렇게 되는 이유는 후자를 트리의 구조로 생각하면 편하다. 트리가 굉장히 비효율적으로 나누어지면, 링크드리스트와 똑같아지고, 탐색에 걸리는 시간복잡도가 n 이 된다. 트리를 효율적으로 나누면, 탐색에 걸리는 시간복잡도가 log(n)이 된다.
코딩도장
- 시간제한을 두고 문제를 풀었다. 크레인 인형뽑기
- 시간 제한을 두니 구현이 엉망이 되었다.
- 파이썬 배열에서 하나의 열을 선택하기- 하나의 1 차원 배열에서 처음으로 0 이 아닌 것이 나오는 위치
- 시간이 제한된 상태에서도 엘레강트한 방법을 쓸수 있어야 한다.
- 그러려면 단순히 풀이개선뿐만 아니라, 반복풀이를 통해서 학습할 수 있어야 한다.
개선할점
- 같은 문제를 여러가지 언어, 여러가지 방법으로 풀어봐야 한다.
- 같은 문제를 꼭! 반복해서 풀어봐야 한다.
- 파이썬 배열에서 열 하나를 선택하는 방법을 학습하자.
- 인형을 넣을때 스택을 사용해서 넣기 함수를 구현 했는데, 따로 테스트 할때 왜 상태와 관련된 문제가 발생했는지를 파악하자. 상태를 주고 새 상태를 결과와 함께 돌려주도록 했었다.
- 인형을 넣는 함수의 인터페이스를 개선하자. true false 는 쫌...
잘한 것
- 잘 안될때 빠르게 접근방법을 찾아보았다. -> 모른다는 사실을 빠르게 인정하고 필요한 피드백을 받았다.
- 풀이상황을 적어서 무엇에 문제가 생겼는지 원인을 정확히 할 수 있었다 - 깊이가 1씩 증가하도록 탐색하는 방법
부족했던 것
- 문제를 풀 시간을 정확히 설정하지 않았다. 피드백이 필요한 시간을 설정하고 딱 그만큼만 해결에 투자하면 더 효율적일 것이다.
python
배열에서 하나의 열 선택
2 번째 열을 선택하고 싶다면, 다음과 같이 list comprehension 을 적용할 수 있다.
column2 = [r[1] for r in array]
다음과 같이 매핑을 하는 것도 가능하다. 하지만 가독성이 안좋다.
list(map(lambda x: x[1], arr))
일차원 배열에서 임의의 predicate 를 만족하는 첫번째 원소를 찾기
예를들어, 다음배열에서 0 이 아닌, 원소를 찾고자 한다면,
next 함수와 제너레이터를 활용할 수 있다.
array = [0, 0, 0, 1, 2]
find_not_zero = next(x for x in array if x != 0)
인덱스를 찾고자한다면 다음과 같이 할 수 있다.
find_not_zero = next(i for x, i in enumerate(array) if x != 0)
next 는 generater 를 인수로 받는 연산으로, generator 에서 나오는 다음값을 반환한다. 특정한 자료를 소비하는 generator 를 정의하고, next 연산을 수행하면, 해당 원소는 자료에서 소모된다.
Author And Source
이 문제에 관하여(20210614), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@gringrape200/20210614저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)