본문 바로가기

전체 글

자바의 스택(stack) 스택은 프로그램에서 가장 많이 쓰이는 자료구조입니다. 우리가 일반적으로 프로그래밍할때는 많이 쓰이지 않을 수도 있지만 실제로 컴퓨터에서는 굉장히 많이 사용하고 있습니다. 우리가 메소드를 호출할 때 메소드에서 다른 메소드를 호출할 수도 있습니다. 메소드는 실행을 마치고 돌아갈 곳을 기억해야합니다. 그럴때 마지막에 있는 호출한 메소드의 주소부터 반환해주어야 합니다. 그러기 위해서는 가장 마지막에 들어간 값이 가장 먼저 나와야합니다. 이것은 스택의 기본 성질입니다. 우리가 편의점에서 물건을 스택한다고 말을 합니다. 편의점 음료수 냉장고를 살펴보도록 하겠습니다. 음료수를 밀어넣는 구조로 되어있습니다. 그래서 차례로 음료수를 넣으면 꺼낼때에는 가장 마지막에 넣은 음료수가 가정 먼저 나오게 되어있습니다. 스택은 가.. 더보기
자바의 Linked list 프로그램에서 데이터를 사용할 때 기본타입을 주로 사용합니다. 하나씩 변수를 사용하기도 하지만 같은 타입의 변수가 여러개 필요한 경우에는 배열을 사용합니다. 배열은 매우 유용한 자료구조입니다. 여러개의 변수를 하나의 이름으로 사용할 수 있고 인덱스를 이용해서 값을 바로 접근할 수 있습니다. 하지만 이 배열에는 치명적인 단점이 몇가지 존재합니다.1. 한번 선언하면 크기를 바꿀 수 없습니다.2. 값을 삽입하거나 삭제하기 힘듭니다. 값을 삽입하려면 일단 크기가 가능한가를 확인해야하고 삽입할 자리이후의 모든 값을 뒤로 옮겨야합니다. 삭제의 경우는 값을 삭제하고 뒤에 있는 모든 값을 앞으로 옮겨야합니다. 크기가 작다면 별 상관이 없겠지만 크기가 크다면 굉장히 비효율적이 될 것이고 삽입과 삭제가 자주 일어난다면 굉장.. 더보기
Git 설및 및 로컬저장소 만들기 내 컴퓨터에 Git 설치하기 로컬에 Git을 설치하려면 구글에서 "git 다운로드"를 검색하고 https://git-scm.com/downloads 링크로 접속합니다. Git 다운로드 페이지에 접속해서 자신의 운영체제에 맞는 링크를 클릭합니다. 다운로드 받은 화일을 실행한다음에 기본 설정을 유지한 채 [Next] 버튼을 눌러 설치를 합니다. Git이 잘 설치되었는지 보기 위해 Git Bash를 실행해보겠습니다. 윈도우 시작 버튼 옆에 있는 돋보기 아이콘을 클릭해서 'Git Bash'를 입력하고, 찾아서 실행합니다.검정화면이 뜹니다. '$' 표시 옆에 'git'이라고 입력을 합니다. 위와 같이 Git 기본 명령어에 대한 안내가 나오면 Git이 제대로 설치된 것입니다. 로컬 저장소 만들기 이제 내 컴퓨터에 .. 더보기
GitHub 가입하기 Git과 GitHub를 사용하기 위해서는 GitHub에 가입해야 합니다. GitHub는 무료와 유료가 있지만 여기서는 일단 무료를 사용하도록 하겠습니다. https://GitHub.com/에 접속해서 [Sign up]버튼을 클릭합니다. Username, Email, Password를 입력하고 초록색 [Sign up for GitHub]버튼을 클릭합니다. 다른 GitHub 유저가 이미 사용하고 있는 이름은 Username으로 사용할 수 없고, Email 주소도 마찬가지입니다. 그래서 여러개의 아이디를 생성하려면 여러개의 Email 주소가 필요합니다. 기재한 Email 주소로 확인 메일을 보내기 때문에 실제 사용가능한 Email 주소를 기재해야 합니다. [Sign up for GitHub] 버튼을 클릭하면 .. 더보기
Git 그리고 GitHub의 기본 개념 요즘 많이 사용되고 있는 Git과 GitHub에 대해 얘기해보도록 하겠습니다. 우선은 버전관리에 대해 알아보도록 하겠습니다. 버전관리란 무엇인가? 처음듣는 얘기같지만 사실 우리는 이미 버전관리를 하고 있습니다. 요즘 게임을 많이 합니다. 게임을 할 때 어디까지 했는지 저장을 했다가 다음에 시작할 때 거기서 부터 다시 시작합니다. 매번 처음부터 시작한다면 우리는 게임을 하지 않거나 멈추지 않을 것입니다. 워드작업을 할때도 실수한 부분이 있다면 ctrl+z를 눌러서 한단계씩 뒤로 갈 수 있습니다. 이는 어떤 시점(버전)으로 이동할 수 있게해주는 버전관리이며, 이를 도와주는 툴이 버전관리 시스템입니다. 위에서 설명한 내용들은 개인 컴퓨터에서 혼자 사용하는 프로그램이라면 별 상관이 없지만 만약 여러 사람이 함께.. 더보기
자바프로그램 예제 - 페니를 없애는 프로그램 오늘도 개념적인 내용이 아닌 예제프로그램을 작성해보도록 하겠습니다.. 이후로는 꼭 필요한 경우가 아니면 개념이나 이론적인 것 보다는 예제를 통해 내용을 알아보는 방식으로 공부하겠습니다. 제가 자바스터디를 하고 있는데 이론적인 내용이 계속되니까 힘들어하더군요. 그래서 예제를 중심으로 하나씩 프로그램을 작성하는 방식으로 했더니 뭔가 만들어낸다는 희열감과 성취감을 느끼더군요. 그래서 알맞은 프로그램 예제를 연구하고 작성해서 이론을 설명해보도록 하겠습니다. 오늘은 그냥 단순한 프로그램 예제입니다. 제가 예전에 캐나다에 있을 때 마트에서 페니를 없애는 작업을 했습니다. 처음에는 프로그램으로 적용되지 않아서 그냥 캐쉬어들이 생각을 해서 했습니다. 끝이 1이나 2로 끝나면 0으로 하고 3이나 4로 끝나면 5로 만듭니.. 더보기
재귀호출 - 알고리즘 오늘은 재귀호출에 대해 알아보도록 하겠습니다. 알고리즘에서 배우는 내용이기는 한데 그렇게 많이 쓰이지는 않습니다. 하지만 재귀호출이 아니면 프로그래밍이 너무 어려워지는 경우들이 있습니다. 재귀호출은 중요한 개념이고 이것을 배움으로써 프로그램에서 함수(자바에서는 메소드)가 어떻게 호출되는지 어떻게 사용되는지 알 수 있습니다. 우선 기본적으로 재귀호출(recursion)은 자기가 자신을 부르는 것이고 반드시 조건문에 의해 종료가 되어야 합니다. 우선 팩토리얼에 대해 알아보겠습니다. 수학에서 n! = n * (n - 1) * (n - 2) * ... * 1입니다. 이것은 다시 n! = n * (n - 1)!로 정의할 수 있습니다. 이것처럼 n!을 (n - 1)!을 이용해서 값을 구할 수 있다면 !를 함수로 생.. 더보기
자바 프로그램 예제 - 로또 프로그램 지금까지 많은 개념과 문법을 배웠습니다. 아직 다 배우지는 못했지만 너무 이론적인 얘기를 많이 했으니까 오늘은 실질적인 문제를 푸는 법에 대해 얘기를 해보겠습니다. 지금 작성하려는 프로그램은 로또 프로그램입니다. 로또를 살때 자동으로 달라고 하면 기계가 자동으로 로또 숫자를 작성해서 줍니다. 요즘에 보면 로또 숫자를 뽑아내는 사이트들이 있습니다. 이런 사이트들은 자기들이 특별한 공식을 사용해서 확률이 높다고 말합니다. 하지만 많은 회원들이 있고 오랫동안 많은 숫자를 제공하다보면 당첨이 되는 경우도 있을 것이고 그걸로 자기들 사이트를 홍보할 수가 있을 것입니다. 이런 사이트들이 어떤 알고리즘을 사용하는지 제가 알지는 못하지만 저도 이런 사이트들을 이용해봤지만 소득은 없었습니다. 그래서 간단히 만들 수 있는.. 더보기