본문 바로가기

STUDY

(40)
[Sorting 02] Selection Sort의 개념 및 구현 들어가며 일기를 쓰는 것과 블로그 포스팅을 하는 것은 정말 꾸준히 하기 힘든 것 같다. 공대생은, 특히나 컴공생은 고학년이 될 수록 한국어가 어려워지는 신기한 현상을 겪게 되기 마련이고 따라서 뭔가를 말로 설명하거나 글로 적어내는 것은 더더욱 어려워지는 거 같다. 잘 아는 것과 잘 설명하는 것, 글로 잘 풀어내는 것 전부 참으로 어려운 일이지만 많이 해보다보면 늘겠지 싶은 심정으로 오늘도 블로그 포스팅을 해본다. 오늘은 sorting 2번째 포스팅인데 sorting 중에서 가장 쉬운 편에 속하는 알고리즘인 'selection sort'에 대해 소개 하려고 한다. 개념 및 특징 제자리 정렬이다. 최악 시간 복잡도: O(N2) 최선 시간 복잡도: O(N2) 평균 시간 복잡도: O(N2) 알고리즘 주어진 리스..
[Sorting 01] Quick Sort의 개념 및 구현 들어가며 대학을 다니면서 알고리즘 과목을 수강하기도 했고 알고리즘 스터디도 했다. 혼자 온라인 저지 사이트에 들어가 쉬운 문제들을 빠르게 풀며, 또는 어려운 문제를 며칠씩 고민해가며 풀기도 했다. 그런데 놀랍게도, 내 머릿 속에 남아있는 알고리즘 지식은 거의 없다. '누군가 지금 당장 다익스트라를 구현해보시오.' 한다면 나는 분명 다익스트라를 익히 들어서 그 이름은 알고 있으나, 어떤 메커니즘을 가진 알고리즘인지 바로 떠올리지 못할 것이다. 이는 내 공부가 체계적이지 않았기 때문이라는 결론에 도달했다. 한 알고리즘을 배우고 이에 대한 다수의 문제를 풀어서 내껄로 만들었던 것이 아니라, 그때그때 필요한 알고리즘들을 찾아보고 그걸 써왔기 때문이다. 그래도 나름 열심히 배웠던 지식들이, 그저 머리를 스쳐지나가..
Java Script의 비동기 처리 들어가며 요새 React가 핫하다고 한다. 그래서 대세에 맞춰서 React에 관한 공부를 간단히 시작해보려고 한다. React는 자바스크립트의 라이브러리 중 하나이므로, React에 대한 포스팅을 본격 시작하기 전에 공부에 필요한 Java Script의 개념들을 살짝 정리하고 가고자 한다. 동기와 비동기 처리 우선, 위키피디아에 나와있는 동기와 비동기에 대한 정의는 다음과 같다. 동기(Synchronization): the coordination of events to operate a system in unison. 비동기(Asynchronization): refers to the occurrence of events independent of the main program flow and ways t..
Introduction to Operating System 전공 수업에서 운영체제에 대한 대략적인 부분들은 이해했지만, 뭔가 확 와닿는 느낌이 없었다. 운영체제에 대한 개념과 이론들을 정리하고 싶다는 생각이 들어서 블로그 포스팅을 시작하게 되었다. 본 포스팅은 'KOCW 이화여자대학교 반효경 교수님의 운영체제 강의'를 참고하여 작성될 예정이다. 운영체제란? - 컴퓨터 하드웨어 바로 위에 설치되어 사용자 및 다른 모든 소프트웨어와 하드웨어를 연결하는 소프트웨어 계층. - 좁은 의미: 커널, 운영체제의 핵심 부분으로 메인 메모리에 상주하는 부분 - 넓은 의미: 커널 뿐 아니라 각종 주변 시스템 유틸리티를 포함한 개념 운영체제 사용 목적 운영체제를 제대로(?) 이해하기 위해 당분간 우리는 스스로를 운영체제라고 생각하려한다. 아래 그림처럼 운영체제는 크게 두 부류의 손..
TensorFlow의 설치 및 기본적인 operations 오늘의 TensorFlow를 설치하고 기본적인 예제를 실습해보자. TensorFlow 란? 구글에서 만든 open-source software libaray for Machine Intelligence 이다. 그렇다면, 머신러닝과 관련된 다양한 오픈소스 라이브러리들이 있을텐데 왜 우리는 이 시점에 TensorFlow를 쓰는가? 그 이유는 간단하다. 한 트위터가 다양한 딥러닝 관련 라이브러리의 깃허브에서 인기도를 나타낸 그래프이다. TensorFlow가 압도적이다. 이는 현 시점에 TensorFlow를 사람들이 가장 많이 사용하고 있으며, 다르게 말해서 뭔가 궁금하거나 문제가 생겨서 검색을 했을 때 많은 자료를 찾을 수 있다는 의미이다. * TensorFlow - TensorFlow is an open s..
Machine Learning Basic 오늘부터 ML에 대해서 포스팅하게 되었다. 이번에 졸업과제를 ML관련하게 진행하게 되면서 AI와 ML에 대해서 이제 막 공부하기 시작하게 되었다. 따라서 AI와 ML에 관해 깊이있게 알지 못하고 포스팅에 다소 잘못된 내용이 있을 수 있는데, 이에 대해 자유롭게 피드백을 주면 적극적으로 반영하여 수정하겠다. 또한 포스팅은 유투브에 올라온 sung kim의 '모두의 딥러닝 시즌1' 강좌를 참고하므로, 많은 부분이 해당 동영상과 겹칠 수 있음을 양해바란다. What is ML? 몇 년전 알파고 대 이세돌의 바둑경기에서 알파고가 4승 1패로 승리를 거두면서, 사람들이 '인공지능', '머신러닝', '딥러닝'과 같은 키워드에 관심을 가지기 시작했다. 사실 인공지능, 머신러닝과 같은 용어들은 최근에 생겨난 것이 아니..
프로세스 개념과 이해 C프로그래밍을 잘하기 위해서는, 내가 짠 프로그램이 어떻게 메모리 상에서 존재하고 실행되는지를 이해할 필요가 있다. 이번 포스팅에서는 다음과 같은 내용들을 다뤄보려고 한다. - 실행파일(executable file)와 프로세스(process)의 개념 - 실행파일(executable file)와 프로세스(process)의 구조 실행파일(executable file)의 개념 아래 그림과 같이, C 소스코드가 컴파일러(compiler)를 거치면 실행파일(executable file)이 된다. C 언어는 고급언어이기 때문에 사람만 이해할 수 있었다면, 실행파일(executable file)은 C 소스코드를 컴퓨터도 이해할 수 있는 기계어로 컴파일러(compiler)가 바꿔준 것이다. (자세한 컴파일 과정은 다른..
안드로이드 스튜디오 설치하기 우선 안드로이드 어플 개발을 위해서 '안드로이드 스튜디오'라는 개발 도구를 설치해야 한다. 바로 설치를 시작해보자. 안드로이드 스튜디오 설치 1) https://developer.android.com/studio 에 접속하여 안드로이드 스튜디오 설치파일을 다운받는다. Download Android Studio and SDK tools developer.android.com 이 때 window 64bits 환경이라면 DOWNLOAD ANDROID STUDIO를 클릭해서 다운 받으면 된다. 혹시 window 32bits 환경이나 MAC이라면 DOWNLOAD OPTIONS를 클릭해서 본인의 컴퓨터에 알맞은 안드로이드 스튜디오를 설치하면 된다. 2) 다운받은 파일을 클릭하여 안드로이드 스튜디오 설치를 시작한다...