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

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

[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..

연산자끼워넣기
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. 입력이 빈 문자열인 경우,..

경쟁적전염
SW/알고리즘 문제풀이 2021. 3. 28. 19:10

2021.03.28 문제 링크 문제설명 NXN 크기의 시험관 바이러스는 1번부터 K번 중 하나 1초마다 상하좌우 방향으로 증식하며, 번호가 낮은 바이러스 먼저 증식. 증식하려는 곳에 이미 바이러스가 있으면 증식 안함. S초 뒤에 주어진 좌표에 바이러스 종류를 찾는 문제 solution 바이러스 목록을 만듭니다. (맵을 돌며 바이러스가 있다면 해당 번호 목록에 넣음) S초 동안 바이러스가 퍼집니다. 네 방향을 돌며 바이러스가 퍼집니다. 이미 바이러스가 있다면 퍼지지 않습니다. 퍼진 바이러스는 기존 바이러스 목록에 포함시킵니다. (for loop에 영향받지 않도록 새로운 목록에 담아서 나중에 추가하는 방식으로 구현) 주어진 좌표에 있는 바이러스 종류를 리턴합니다. 구현1. 30564KB, 1004ms 한번 ..

[Python] 가상환경
SW/Python & Django 2021. 3. 26. 23:39

Python 가상환경 파이썬으로 개발을 진행하면서 목적에 맞게 새로운 패키지와 모듈을 사용하게 됩니다. Django 개발을 위해 환경구축을 할 때, 여러가지 버전 중 특정 버전을 사용하여 개발하기 위해 가상환경을 구축하여 분리해 개발을 진행했습니다. 이처럼 응용프로그램에 특정 버전의 라이브러리가 필요한데, 같은 시스템의 다른 응용 프로그램에서는 다른 버전이 필요한 경우가 생길 수 있습니다. 가상환경을 구축함으로써 환경을 분리하여 이를 가능하게 할 수 있습니다. Virtual environment Python에서 가상환경을 만들고 관리하는데 사용하는 모듈은 venv 입니다. 만약 여러 Python 버전이 있다면 구축한 가상환경에서 사용할 Python 버전을 선택할 수 있습니다. 가상환경이란, 같은 시스템에..