분류 전체보기
-
Crafton Q&ASW사관학교 Jungle 2021. 1. 11. 19:09
Q&A Q. 크래프톤에 신입으로 들어가도 바로 라이브 서비스 중인 직접적으로 관여하기도 하나요? 크래프톤은 큰 회사입니다. 회사 내에서 하나의 프로젝트가 진행되는 것이 아니라 여러 프로젝트가 돌아가고 있습니다. 그래서 반드시 그렇다고 말씀드리기가 어렵네요. 직접 관여합니다. 하지만, 여러 안전장치들이 있습니다. 멘토와 사수가 함께 코드를 확인하며, 문제상황이 생기는 것을 사전에 방지합니다! Q. 자기 개발을 누구도 강요하지 않는 환경에서 정환님은 어떤 과정을 통해서 자기 개발을 해오셨나요? 세미나도 꾸준히 만들어 지고, 꾸준히 토론하는 문화, 분위기가 있었기 때문에 함께 이야기를 나누기 위해서는 저도 끊임없이 발전해야 했습니다. 자기개발을 강요 받은 셈입니다...ㅎ Q. 어떤 회사는 가상의 현실을 체험을..
-
B-Tree - intro컴퓨터 구조 2021. 1. 11. 01:16
B-Tree 1월 8일 부터 1월 13일까지, B - Tree와 B+ - Tree를 구현하는 프로젝트를 진행하고 있다. 오늘(1월 11일)을 시작으로 한 주 동안 B - Tree의 원리, 삽입 그리고 삭제가 어떻게 이루어지는지에 대해 알아볼 것이다. B - Tree 관련 포스팅들은 [Introductions to Algorithms (Third Edition), Tomas H. Corman]의 내용을 토대로 부족한 설명들과 예시를 덧 붙일 예정이다. 들어가기 전에 B - Tree를 공부하며, 인터넷의 여러 강의들 그리고 블로그들을 참고했다. 그런데, B - Tree를 구현하는 방법이 조금씩 달라서 이해하는데 혼란스러웠던 점이 있다. 특히, 대부분의 자료들에서 삽입에 대한 설명보다 삭제에 대한 설명이 부족..
-
단순 연결 리스트컴퓨터 구조 2021. 1. 10. 02:12
단순 연결 리스트 C언어의 pointer를 사용해 연결리스트를 구현해 보았다. 아래의 structure를 만들어 연결리스트의 node로 사용하였다. node는 item과 pointer로 구성했다. item은 해당 노드의 값을 저장하고, pointer는 다음에 이어질 node의 주소를 저장한다. typedef struct node { int item; //node의 값을 저장하는 변수 struct node* next; //node의 주소를 저장하는 포인터 } node; 단순 연결 리스트 중에서도 가장 간단한 형태로 구현했다. 값이 추가되지 않은 초기 상태에는 연결 리스트의 시작지점을 가리키는 'head'node가 존재한다. 현재 값이 추가되지 않았음으로, head의 pointer(head->next)는 N..
-
C - Pointer컴퓨터 구조 2021. 1. 8. 13:03
Pointer 아래의 코드는 a와 b를 swap하는 함수를 흉내낸 코드이다. 분명 문제가 없어 보이지만, 실제로 프로그램을 실행 시켜보면, a와 b의 값이 바뀌지 않았음을 알 수 있다. #include #include void swap(int* x, int* y); int main() { int a = 123; int b = 321; printf("%d %d\n", a, b); swap(&a, &b); printf("%d %d\n", a, b); return 0; } void swap(int* x, int* y) { int tmp = *x; *x = *y; *y = tmp; } //output 123 321 123 321 왜 바뀌지 않았을까?! 위의 그림과 같이 메모리의 code segment, data..
-
JUNGLE_4주차SW사관학교 Jungle 2021. 1. 7. 11:22
컴퓨팅 사고로의 전환 4주차 주차별 키워드 - 동적 프로그래밍, 그리디 알고리즘 더 고민해볼 키워드 - 비트필드를 이용한 다이나믹 프로그래밍 풀어보자 문제를 설명하는 능력이 아주 부족하다는 생각은 하고 있었지만, 이번 기회에 다시 한번 느낄 수 있었다. 설명하는 연습도 꾸준히 해 나가도록 하자. 문제 정의 문제 해결 방안 구현 방법 SW사관학교 정글 WEEK04 시험 - 계단 오르기 click - 내리막길 click [포스팅] - 보석 도둑 click 보석 도둑💎 이번 주의 3번 문제였던 보석 도둑에 대해 알아보자. 도둑에게는 가방이 k개 있고, 각 가방에는 가방에 담을 수 있는 최대 무게보다 작거나 같은 보석을 1개씩 담을 수 있다. 이때, 훔칠 수 있는 보석 가격들의 합의 최대값을 구해야 한다. 단순..
-
Python - Variable ScopePython 2021. 1. 6. 23:32
Variable Scope 파이썬의 변수는 해당 변수가 선언된 범위 내의 범위에서만 유효하다. 이를 Scope라고 부른다. Local Scope, Enclosed Scope, Global Scope 그리고 Built-in Scope 이렇게 네가지 종류의 Scope가 있다. 각각의 Scope들은 아래와 같은 범위를 가진다. 각각의 Scope들에 대해 알아보자. Local Scope Local Scope는 현재 컴퓨터가 실행중인 함수의 Scope이다. 변수를 찾을 때, 가장 먼저 해당 변수가 Local Scope에 존재하는지 확인한다. locals()로 현재 local variable을 확인할 수 있다. x = 1 def func(): x = 2 print(locals()) func() 위의 코드를 실행하면..
-
./Missing Semester - 셸(Shell) 스크립팅컴퓨터 구조 2021. 1. 5. 22:45
./Missing Semester 연습문제 사이즈는 사람이 읽을 수 있을 법한 형식으로 (e.g. 454M instead of 454279954) 최신순 파일 정렬 색상화 되어 출력 [man ls] (https://www.man7.org/linux/man-pages/man1/ls.1.html)를 읽고 다음과 같은 방식으로 파일을 나열하는ls 명령을 작성합니다. l - 자세히 출력 h - 사람이 읽을 수 있을 법한 형식으로 출력 a - 숨겨진 파일까지 모두 출력 t - 시간순으로 출력 ls -lhat --color 다음을 수행하는 bash 함수marco 및polo를 작성합니다. marco를 실행할 때마다 현재 작업 디렉토리가 어떤 방식으로 저장되어야합니다. 그러면polo를 실행할 때 어떤 디렉토리에 있든 ..
-
Python - 17070 - 파이프 옮기기 1Problem Solving 2021. 1. 5. 00:01
파이프 옮기기 1 click 내리막길 문제의 응용 버전이다. [내리막길 포스팅] 파이프가 가로로 위치하고 있을 때를 0, 대각선으로 위치하고 있을 때를 1 그리고 세로로 위치할 때 2라고 하자. 가로와 세로인 경우 해당 칸만 빈칸이라면, 위치시킬 수 있다. 하지만, 대각선인 경우, 해당 칸 위쪽과 왼쪽까지 빈칸이어야 위치시킬 수 있다. 가로 세로 대각선인 경우를 각각 탐색해 나가야 함으로, 각 칸에 길이 3인 배열을 추가한 3차원 배열(dp)을 만들었다. 이 배열에는 (n,m)으로 갈 수 있는 경우의 수를 저장할 것이다. 방문여부를 확인하기 위해서 dp배열의 초기값은 모두 -1로 설정했다. 방문한 지점은 0으로 변경해주어 방문 여부를 체크하기 위함이다. dp[n-1][m-1]은 [1,1,1]로 설정해 주..