분류 전체보기
-
.gitignore에 대해 알아보자.Project/git 2020. 12. 31. 00:10
.gitignore 깃에 올라가면 안 되는 민감한 자료들 있잖아, 그런 파일들을 안 넣을 수도 있는 거고! 또,,, 깃에 넣을 필요가 굳이 없는 애들이 있지. 그런 건 각자 받으면 되는 거지. 뭐 *** 파일이라던지,,, 그런 쓸데없는 것들 - 민규 why? .gitignore는 불필요한 파일이 git에 올라가는 상황을 방지하기 위해서 사용한다. 프로젝트를 진행하다 보면, Python 가상 환경 폴더(venv), django의 settings.py 등 공유되면 안되는 파일들이 존재한다. 가상 환경 폴더의 경우 각 프로젝트마다 묘듈 & 라이브러리의 버전을 독립적으로 유지하기 위해 사용한다. 또한, 운영체제 마다 가상환경 폴더의 구성이 다르기 때문에 git commit에서 제외시켜주어야 한다. Django의..
-
Python-2638-치즈Problem Solving 2020. 12. 30. 00:34
🧀치즈 click 이 문제도 두 달에 걸쳐 시도했지만, 풀지 못했던 문제였다. 두달여 만에 시도했더니 생각보다 수월하게 풀 수 있었다. 그새 실력이 성장한 것 같다. 앞으로도 꾸준히 풀어나가자! 문제 분석 문제를 풀면서 가장 고민이었던 부분 두 가지는, 내부 공기를 어떻게 처리해야 하는지와 치즈들을 어떻게 탐색해 나갈지 였다. 내부 공기 먼저, 내부 공기와 외부 공기를 다른 문자(혹은 숫자)로 표시한다. 녹을 치즈들에 대해 내부 공기와 동일한 문자로 변경해둔다. 한 사이클을 모두 돌고난 후에 녹은 치즈들을 시작으로 BFS탐색을 하며 외부 공기와 닿은 내부 공기도 모두 외부 공기로 변경한다. 치즈 탐색 치즈들을 모두 deque에 추가해둔 후에, 각 치즈들에 대해 탐색을 한다. 이때, 녹은 치즈면 deque..
-
[컴퓨터 시스템] 1. 프로그램이 실행되는 과정컴퓨터 구조 2020. 12. 29. 01:53
프로그램은 다른 프로그램에 의해 다른 형태로 번역된다. hello 프로그램이 실행되고, hello를 출력하기 까지 어떤 과정을 거치는지 알아보자. hello 프로그램은 우리가 이해할 수 있는 형태의 고급 C 프로그램으로 일생을 시작한다. 하지만, 이 프로그램이 시스템에서 실행되려면, 저급 기계어 인스트럭션(명령어 집합)들로 번역되어야 한다. linux> gcc -o hello hello.c GCC 컴파일러 드라이버는 소스파일 hello.c를 읽어서 실행파일인 hello로 번역한다. 이 과정은 Pre-processor, Compiler, Assembler 그리고 Linker를 통해 일어난다. 이들을 합쳐서 컴파일 시스템이라고 부른다. Preprocessor Preprocessor는 본래의 C 프로그램을 #..
-
Python-2206-벽 부수고 이동하기Problem Solving 2020. 12. 28. 00:28
벽 부수고 이동하기 click 두 달 동안 고통받았던 문제를 (힌트를 조금 얻긴 했지만)오늘 드디어 풀 수 있었다. 기본적인 컨셉은 이해하고 있었는데, 시간초과의 벽에 부딛혀 힘들어 했었다. 기본 BFS를 별 생각없이 너무 많이 풀다보니, 내 코드에 틀을 정해놓고 적용시키는 느낌이 든다. 유연한 사고를 방해하는 원인인 것 같다. 알파벳 문제도 그렇고 조금 더 높은 난이도의 문제를 풀며 응용력을 키워나가야 겠다. 문제 분석 맵에서 0은 이동할 수 있는 곳을 나타내고 1은 이동할 수 없는 벽이 있는 곳을 나타낸다. 다른 BFS문제와 다른 점은 벽을 한 번 부수고 이동할 수 있다는 것이다. 이때, 벽을 부쉈는지 혹은 부수지 않았는지에 상관 없이 최단거리로 도달하는 경우를 구해야 한다. BFS를 진행하며 현재 ..
-
Python-1987-알파벳Problem Solving 2020. 12. 27. 01:32
알파벳 click 풀릴것 같으면서도 메모리 초과와 시간초과에 시달렸던 문제였다. BFS를 하면서 set자료구조를 사용할 생각을 한 번도 해본적이 없었는데, 이 문제에서 처음으로 set을 사용해서 풀었다. 탐색을 하면서 중복을 제거해 주는 부분이 정말 중요했다. 문제 분석 문제에 명시되어 있듯이, 새로 이동하는 칸에 적혀 있는 알파벳은 지금까지 지나온 모든 칸에 적혀 있는 알파벳과는 달라야 한다. 하지만, 이 조건만 적용해 dfs를 수행하면 시간초과가 발생하게 된다. Code - 시간초과 발생 import sys from collections import deque read=sys.stdin.readline n,m = map(int,read().split()) board = list(list(read()...
-
Python - Call by Object ReferencePython 2020. 12. 26. 02:34
Python에서의 'Call by Object Reference' 파이썬의 변수에 대해 공부하다가 함수 인수 전달 방식인 call by value call by reference call by object reference 에 대해 알게 되었다. 이들의 차이점에 대해 알아보자! Call by Value 함수에 인수를 전달하는 방식이다. 변수의 값을 복사해 함수의 인자로 전달한다. 따라서, 함수 내에서 전달된 인자를 조작해도 함수 외부의 변수에는 영향을 미치지 않는다. Call by Reference 함수에 인수를 전달하는 방식이다. Java 혹은 C언어의 포인터로 함수의 인자에 전달하는 방식이 이와 같은 방식이다. 변수가 가리키는 주소 값을 함수의 인자로 전달한다. 함수 내에서 전달된 인자를 조작하면, ..
-
JUNGLE_2주차SW사관학교 Jungle 2020. 12. 24. 15:51
컴퓨팅 사고로의 전환 1주 차 주차별 키워드 - 이분 탐색, 분할 정복, 스택, 큐, 우선순위 큐 더 고민해볼 키워드 - 세그먼트 트리 - 분할 정복 - heapq, stack, deque Class 구현 SW사관학교 정글 WEEK01 시험 - 쿼드 트리 click - 쇠막대기 click - 소수의 곱 click 소수의 곱 click 2014번: 소수의 곱 첫째 줄에 K(1 ≤ K ≤ 100), N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 K개의 소수가 오름차순으로 주어진다. 같은 소수가 여러 번 주어지는 경우는 없으며, 주어지는 소수는 모두 541보다 작거나 www.acmicpc.net 이번 주의 마지막 문제였던 숫자 야구에 대해서 알아보자. K 개의 소수가 주어졌을 때, 이 소수들을 서..
-
Python - 함수에 배열을 인자로 전달할 때Python 2020. 12. 23. 17:35
함수에 배열을 전달할 때 무슨 일이 일어날까? 함수의 인자로 배열을 전달한 후에 배열에 5를 'append' 해보자. def append_item(arr_in_function): print('id : ', id(arr_in_function), 'before change in function : ',arr_in_function) arr.append(5) print('id : ', id(arr_in_function), 'after change in function : ',arr_in_function) arr = [1,2,3,4] print('id : ', id(arr), 'before function : ', arr) append_item(arr) print('id : ', id(arr), 'after fu..