SOLID BASIC
HTML | 생활코딩 WEB1 - HTML 완강
생활코딩 WEB1 과정 중 [HTML & Internet]을 완강했다. 강의력이 매우 훌륭하시고 배우는 과정도 흥미로워서 쭉쭉 진도를 나가다 보니 금방 완강... 물론 이 WEB1 과정은 본격적으로 공부 하기 전 기본기를 다지는 수업이라 비교적 단순하지만, 교재까지 복습 완료했다! 총 2회독을 한셈이다. 나머지 WEB1 과정을 공부한 뒤에는 개인적인 웹 프로젝트를 하나 만들어볼 생각이다! 이 과정을 공부하고 난 후에 본격적으로 공부할 때에는 이 카테고리에 복습하면서 기록할 예정이다. 그럼 CSS 공부하러 ㄱ ㄱ
HTML | WEB1 - 기본 문법 태그 부터 웹사이트 완성하기
내가 공부하는 로드맵이 올바른 것인지 고민해보았다. 나는 비전공자가 아니라, 앞으로 컴퓨터 공학 학위를 받을 학부생이다. 내가 걷고싶은 개발자의 길은 프론트앤드와 백엔드를 탄탄하게 이해하고 다룰 수 있는 풀스택 개발자이다. 이제까지 고민을 수도 없이 해왔고 앞으로도 할테지만 오늘 내가한 고민의 결론은 지금까지의 공부 과정을 되짚어 보고 길을 바로 고치는 것이었다. 나는 다음 학기 부터 대학에서 전공 공부를 시작할 예정이고, 시작 전에 기초적인 CS 지식의 뼈대를 세우고 싶다. 개인 프로젝트도 개강 전 하나 이상 완성하는 것이 목표이다. 지원했던 SKT 개발 대외활동 데보션 영에 합격했다는 결과 통지를 받았다. 2학기에는 전국 연합 동아리에 지원할 예정이다. 그러기 위해 남은 6월부터 8월까지 열심히 개인..
CS | 자료구조(2) - 연결 리스트 [시연, 트리], 해시 테이블, 스택, 큐, 그리고 딕셔너리
배열과 비교해서 연결 리스트는 새로운 값을 추가할 때 다시 메모리를 할당하지 않아도 된다는 장점이 있다. 하지만 이런 유동적인 구조는 그 대가가 따른다. 구조가 정적인 배열과 달리 연결 리스트에서는 임의 접근이 불가능하다. 연결 리스트에 값을 추가하거나 검색하는 경우를 생각해 보자. 이를 위해서는 해당하는 위치까지 연결 리스트의 각 node들을 따라 이동해야 한다. 따라서 연결 리스트의 크기가 n 일때 그 실행 시간은 O(n)이 된다. 배열의 경우 임의 접근이 가능하기 때문에 (정렬 되어 있는 경우) 이진 검색을 이용하면 O(log n)의 실행 시간이 소요 되는 것에 비해서 다소 불리하다. 이처럼 여러 데이터 구조는 각각 장단점이 존재한다. 프로그래밍을 할 때 목적에 부합하는 가장 효율적인 데이터 구조를..
CS | 자료구조(1) - malloc 과 포인터 복습, 배열의 크기 조정, 연결 리스트 [도입, 코딩]
아래와 같은 main 함수 코드가 있다. 여기서 문제가 될 만한 지점이 있는데... int main(void) { int *x; int *y; x = malloc(sizeof(int)); *x = 42; *y = 13; } main 함수 안의 첫 두 줄에서는 포인터 x와 y를 선언한다. 그리고 x에는 malloc 함수를 이용해서 int 자료형 크기에 해당하는 메모리를 할당한다. 그 다음에는 x와 y 포인터가 가리키는 지점에 각각 42와 13을 저장한다. 여기서 문제가 될 만한 부분은 *y = 13 이다. y는 포인터로만 선언되었을 뿐이지, 어디를 가리킬지에 대해서는 아직 정의가 되지 않았다. 따라서 초기화 되지 않은 *y는 프로그램 어딘가를 임의로 가리키고 있을 수도 있다. 따라서 그 곳에 13이라는 값..
CS50 | 메모리(2) - 메모리 교환, 스택, 힙, 파일 쓰기/ 읽기
아래와 같은 코드가 있다. 함수 swap은 정수 a와 b를 입력받아 그 값을 바꾸는 일을 수행한다. main 함수에서는 x에 1, y에 2를 입력하고 swap 함수를 통해 그 두 값을 바꾸려고 한다. 과연 내 의도대로 잘 바뀌어 출력이 될까? #include void swap(int a, int b); int main(void) { int x = 1; int y = 2; printf("x is %i, y is %i\n", x, y); swap(x, y); printf("x is %i, y is %i\n", x, y); } void swap(int a, int b) { int tmp = a; a = b; b = tmp; } 위 코드를 컴파일하고 출력해보면 의도와는 다르게 swap 함수를 거친 후에도 x와 ..
CS50 | 메모리 - 매모리 주소, 포인터, 문자열, 문자열 비교, 복사, 할당 그리고 해제
16진수 컴퓨터과학에서는 숫자를 10진수나 2진수 대신 16진수(Hexadecimal)로 표현하는 경우가 많다. 컴퓨터에서 데이터를 처리하기 위해 16진수를 사용할 때 장점이 있기 때문이다. 16진수와 일상생활에서 우리가 사용하는 10진수와 비교하면 그 차이를 알 수 있다. 16진수를 사용하면 10진수보다 2진수를 간단하게 나타낼 수 있다. 10진수를 16진수로 바꾸어보기 JPG 이미지 파일은 항상 255 216 255 로 시작되고 이것은 10진수이다. 하지만 실제 컴퓨터 내에서는 10진수를 사용하지 않는다. 컴퓨터는 0과 1만을 이해할 수 있기 때문이다. 먼저 255 216 255를 2진수로 나타내보면 위와 같다. 2진수로 모든 데이터를 표현하기에는 너무 길어지므로 16진수로 바꾸어 보면 2^4 은 1..