Tree
SW/Algorithm & Data Structure 2021. 5. 10. 11:39

Tree 선형 구조가 아닌 계층 구조로 노드 와 노드를 연결하는 엣지 로 구성되어있는 자료구조입니다. 리스트, 스택, 큐 등의 선형 자료구조를 이용해서 조직도와 같은 계층구조를 구현하기란 쉽지 않죠. 계층형 구조를 담기 위한 자료구조 형태가 트리입니다. 용어 노드 : 데이터가 담기는 단위. 루트 : 부모가 없는 노드. 트리는 하나의 루트 노드만 존재. 리프 : 자식이 없는 말단 노드. 자식 : 하나의 노드 (부모 노드) 아래에 연결된 노드. 형제 : 같은 부모를 가지는 노드. 노드의 크기(size) : 자신을 포함한 모든 자손 노드의 개수. 노드의 깊이(depth) : 루트에서 어떤 노드에 도달하기 위해 거쳐야 하는 간선의 수 노드의 레벨(level) : 트리의 특정 깊이를 가지는 노드의 집합 노드의 차..

초집중의 힘
교양/서평 2021. 5. 9. 11:52

초집중의 힘 저자 : 박세니 의식과 무의식 무의식의 언어는 상상력 이며, 의식의 언어는 논리 이다. 정신의 10%는 의식이며, 90%가 무의식이다. 당연하게도 10% 영역에서 '할수 있어' 라고 생각해도, 90% 영역에서 '할 수 없어' 라고 생각한다면 행동에 반영되는 마인드셋은 90%의 '할 수 없어' 일 것이다. 따라서 목표를 이루려면 반드시 무의식을 내편으로 만들어야 한다. '목표를 이루는 것은 어려워' 라는 마인드셋을 가지고 도전하면 이룰 가능성이 낮아질 수밖에 없다. 무의식에 '목표를 이루는 것은 당연히 가능하다.' 라는 생각이 지배적으로 자리매김되어 있어야 한다. 어떻게 무의식을 내편으로 돌릴 수 있을까? 자기암시 박세니 ..

[Python] 2차원 리스트 회전시키기
SW/Python & Django 2021. 4. 26. 22:02

2nd List Rotate Python의 내장함수 (unpack , zip ) 를 이용해서 2차원 list를 회전시킬 수 있습니다. pack / unpack Python은 * 혹은 ** 를 이용하여 container type data를 pack / unpack 할 수 있습니다. tuple, list의 경우 * 를, dict의 경우 ** 를 사용합니다. packing 은 여러개의 객체를 하나의 객체로 합쳐줍니다. * 를 붙인 매개변수에 하나 혹은 여러개의 객체가 들어올 경우 해당 객체들은 packing 되어 저장됩니다. def testFunc(*num): print(num) testFunc(5, 6, 7) # 결과 : (5, 6, 7) unpacking 은 여러개의 객체를 포함하고 있는 하나의 객체를 풀..

가사검색
SW/알고리즘 문제풀이 2021. 4. 20. 18:49

가사검색 2021.04.20 Solution1 Hashing & Slicing & BruteForce query를 슬라이싱합니다. ? 가 접미사인 경우, ? 전까지 슬라이싱 합니다. ? 가 접두사인 경우, 뒤집어서 ? 전까지 슬라이싱 합니다. 전부 ? 인 경우, IsAll 변수에 표시합니다. words와 query를 비교합니다. 길이를 비교합니다. (다르면 더이상 확인할 필요 없습니다. => 거짓) query가 전부 ? 인 경우, 더이상 확인할 필요 없습니다. => 참 words의 접두사 / 접미사와 슬라이싱한 query를 query의 길이만큼 전부 비교합니다. 이미 확인된 녀석은 Dictionary로 값을 기억하고 있다가 해당 쿼리가 다시 나타나면 그 값을 그대로 사용합니다. 결과 : 효율성 테스트케이..

인구이동
SW/알고리즘 문제풀이 2021. 4. 20. 18:14

인구이동 Solution BFS 모든 나라를 돌면서 국경선을 공유할 나라를 묶는다. 국경선을 공유한 나라의 인구수를 업데이트한다. 인구이동이 없을 때까지 반복한다. 2019.10.19 C++ 풀이 #include #include #include using namespace std; const int MAX = 55; int map[MAX][MAX][2]; bool check[MAX][MAX]; pair rememMap[MAX*MAX]; int N,L,R; queue myQ; int dx[4] = {1,0,-1,0}; int dy[4] = {0,1,0,-1}; int BFS(int y,int x,int nowIdx,int nextIdx){ int count = 0; int sumMap = map[y][x]..

감시피하기
SW/알고리즘 문제풀이 2021. 4. 14. 21:08

2021.04.03 감시피하기 Solution BruteForce 조합으로 장애물 3개를 놓을 위치를 정한다. 장애물을 놓고 학생들이 선생님들로부터 감시에서 피해지는지 확인한다. import sys sys.stdin = open('input.txt', 'r') from itertools import combinations from copy import deepcopy def check(myMap, y, x): # return go, See if myMap[y][x] == 'S': return False, True elif myMap[y][x] == 'O' or myMap[y][x] == 'T': return False, False e..

[Django] admin 계정 관리(생성, P/W 찾기)
SW/Python & Django 2021. 4. 11. 16:38

[Django] admin 계정 관리(생성, P/W 찾기) terminal 에서 admin 계정 만들기 $ python mange.py createsuperuser Django Framework Admin 계정의 P/W 찾기 기능을 미리 만들어두지 않았다면, 비밀번호를 잊어버렸을 때 난감한 상황이 찾아올 수 있습니다. Terminal에서 admin 계정 찾고 비밀번호를 변경할 수 있습니다. (Ver 기준 : django 3.x) terminal 에서 admin 계정을 찾기 Django Project directory로 이동 (manage.py 파일이 있는 directory) django shell python manage.py shell shell에 정상적으로 진입했다면 >>> 표시가 나옵니다. shel..

GRIT
교양/서평 2021. 4. 6. 22:22

2021.04.06 작년(2020년) 말 이 책을 구하게 되었습니다. 대학생활동안 독서습관을 기르기 위해 꾸준히 노력했으나, 취업준비 ~ 회사 생활 동안 금방 무너져버렸습니다. 그렇게 무기력해지던 중 변화를 가져와야 겠다고 생각을 했고, 지난달 2021년 3월 출퇴근길에 책을 읽기로 다짐했습니다. 우연히도 독서할 책을 GRIT로 정하였습니다. 책을 읽으며 어느순간 제게 사라졌던 것은 GRIT 이었다는 것을 느꼈고, 책의 내용은 출퇴근길 독서 라는 다짐을 절대 포기하지 않도록 영향을 주었습니다. 1년사이에 급격히 무너진 정신만큼 체력과 건강도 악화된 제게 출퇴근길은 이미 그로기 상태였습니다. 책을 읽으며 집중하지 못하기 일쑤였습니다. 하지만 절대 포기하고 싶지 않았고 집중 못하더라도 일단 꺼내들려고 노력했..

연산자끼워넣기
SW/알고리즘 문제풀이 2021. 4. 3. 17:10

2021.03.30 연산자 끼워 넣기 삼성전자 SW 역량테스트 Solution 완전탐색 모든 연산자 순열에 대해서 연산을 해보고 최소/최댓값을 업데이트하는 방식으로 구현하였습니다. # make permutation list에서 순열을 만들 때, 그냥 연산자 숫자로 순열을 만들면 중복되는 순열이 생겨서 시간초과가 발생했습니다. 그래서 set으로 먼저 만든 뒤 list로 변환하여 중복이 없도록 하여 해결하였습니다. import sys sys.stdin = open('input.txt', 'r') from itertools import permutations inf = 9999999999 # Brute Force def solution(N, A, calcPer): minRet = ..

괄호변환
SW/알고리즘 문제풀이 2021. 4. 3. 17:10

2021.03.30 문제링크 - 괄호 변환 2020 카카오 신입 공채 1차 Solution 문제에 적혀있는 알고리즘 그대로 구현하였습니다. import sys sys.stdin = open('input.txt', 'r') def check(p): tmp = [] for s in p: if s == '(': tmp.append(s) elif s == ')': if len(tmp) == 0: return False else: tmp.pop() if len(tmp) > 0: return False else: return True def solution(p): lenP = len(p) answer = '' # 1. 입력이 빈 문자열인 경우,..