효율적인 트리 순열 구현

참고한 문서 Iterative Preorder Traversal - GeeksforGeeks Inorder Tree Traversal without Recursion - GeeksforGeeks Inorder Tree Traversal without recursion and without stack! - GeeksforGeeks Iterative Postorder Traversal | Set 2 (Using One Stack) - GeeksforGeeks 전위탐색 루트를 방문한다. 왼쪽 서브트리를 방문한다. 오른쪽 서브트리를 방문한다. 재귀적인 함수 호출을 막을려면 효율적인 순회 처리가 필요하다. 순회되는 객체를 즉시 사용하는 방법으로 스택을 사용했습니다. def preorder(self): stack = [self.root] # 1 while len(stack) > 0: # 2 item = stack....

2018년 10월 10일 · 6 분 · 1130 단어 · 김무훈

간단한 파이콘 한국 2018 후기

세션을 미리 골라 보자 개인적으로 10분 남짓한 자투리 시간을 활용하여 다음 세션을 정하기 난감해하는 편인데, 이번에는 미리 시간을 들여 기회 비용이 크다고 생각되는 세션1을 우선적으로 컨퍼런스 일정을 잡아놓았다. 현장에서 듣고 싶은 세션을 별 무리 없이 골라낼 수 있어서 편리했다. 세워둔 계획대로만 하자 하지만 예외가 딱 하나 있었는데, 라이트닝 토크 자료를 만드느라 녹화가 금지된 오전 세션2을 듣지 못하였다. 이런 손실을 미쳐 감안하지 못해서 아쉬웠다. 스폰서 부스 이벤트 아쉽게 스폰서 부스에 참여할 시간을 생각하지 못했다....

2018년 8월 8일 · 1 분 · 104 단어 · 김무훈

2018년 7월 기술 아티클 정리

소프트웨어를 모르는 대한민국 기업의 위기 그럴싸한 그림을 그리면 코드가 변환되는 방식과 코드를 제대로 짜려는 경쟁구도에 대한 2000년대 초반의 이야기가 흥미로웠던 글. 아직 코딩을 잘 모르는 학교 동기들에게 보여주고 싶었다. How to create a serverless service in 15 minutes AWS 람다 설정이 까다로워 heroku로 대신 배포했었던 일이 있었는데1, 나중에라도 다시 AWS Lamda를 도전할 때 참고해볼 만한 글인 것 같다. 공유가 쉬운 컬러 시스템 만들기 색상 팔레트를 만들고 디자인과 개발 도구간 같은 컬러 네이밍을 사용하는 방법을 알려주는 글....

2018년 7월 7일 · 3 분 · 456 단어 · 김무훈

if 문 없는 파이썬 코드 작성하기

우연히 Medium에서 *Coding Tip: Try to Code Without If-statements - samerbina*을 접하게 되면서 교내 학식 크롤러 ‘jejunuMeals‘를 if문 없이 새로 작성해봤습니다. 딕셔너리를 사용하여 줄여보자 if문으로 제어하는 weekday , atom 을 딕셔너리 구조로 대체한다면 코드를 상당히 절약할 수 있을 것 같았다. for index, atom in enumerate(data): if index == 1 or index == 5 or index == 9 or index == 13 or index == 17: weekday = weekday + 1 yaml[weekday]['점심'][atom['정식'] = atom[2] yaml[weekday]['저녁'][atom['정식']] = atom[3] elif index == 2 or index == 6 or index == 10 or index == 14 or index == 18: yaml[weekday]['점심'][atom['특식']] = atom[1] yaml[weekday]['저녁'][atom['특식']] = atom[2] elif index == 3 or index == 7 or index == 11 or index == 15 or index == 19: yaml[weekday]['점심'][atom['양식']] = atom[1] yaml[weekday]['저녁'][atom['양식']] = atom[2] elif index == 4 or index == 8 or index == 12 or index == 16 or index == 20: yaml[weekday]['점심'][atom['중식']] = atom[1] yaml[weekday]['저녁'][atom['중식']] = atom[2] return toYaml 여러 키에 같은 값을 대입하기 flags = {(1, 5, 9, 13): 2} # 처음에 생각했던 방법인데 안됨 flags = dict....

2018년 7월 7일 · 2 분 · 328 단어 · 김무훈

문제로 풀어보는 알고리즘 : 시작하기

오른쪽으로 배열 회전하기 배열 arr[]에서 위치 s, t 사이로 1만큼 오른쪽으로 회전시켜보자. 단, arr[t]의 경우, arr[s]로 복사하면 된다. 풀이 순서 i = t : 뒤부터 탐색을 시작하자. arr[i] = arr[i - 1] : 1 만큼 왼쪽으로 이동. arr[s] 에 이르선 arr[s - 1] 이 더 이상 없는 문제가 있음. 사전에 arr[t] 를 last 에 저장하여 arr[s] 에 대입한다. 코드 풀이 void right_rotate(int arr[], int s, int t) { int i, last; last = arr[t]; for (i = t; i > s; i--) arr[i] = arr[i - 1]; arr[s] = last; } N 만큼 이동하기 1만큼 이동하는 함수를 k 번 반복하면 되지만 이 방법은 O(n^k), (n은 s , t 사이의 거리)로 느린 문제가 있다....

2018년 6월 6일 · 2 분 · 388 단어 · 김무훈