본문 바로가기

이론111

알고리즘 스터디 3회차 - 이진트리(Binary Tree) 구현 - 이진탐색트리 구현 구글링 하는데 90% + 옮겨 적는데 8% + 합치는데 2% 정도의 비율로 이진 트리를 구현하였다. 몇 군데의 블로그에 올려진 이진트리 소스들을 보고 짜맞춰서 순회 기능 + 추가 및 삭제 기능을 가진 이진 트리를 구현해보았다. 책은 어차피 라이브러리에 구현되어있는 이진 트리를 쓰고, 심지어 언어도 파이썬이라 개념만 정리하고 나머지는 구글링에 의존하여 소스를 짰다. 사실 짰다는 말보다는 짜맞췄다라는 말이 더 어울리지만 "이해했으면 된거지..." 라고 생각하며 정리해본다. 이진 트리 구현하랬는데 이진탐색트리를 해버렷네 ㅎ 이진탐색트리란? 효율적인 탐색 작업을 위해 만들어진 자료구조로 몇 가지 특징을 가지고 있다. 1. 모든 원소는 서로 다른 유일한 키를 가진다. 2. 왼쪽 서브트리의 원.. 2018. 3. 9.
알고리즘 스터디 2회차 - Stack & Queue 구현 저번 시간에 만들었던 연결 리스트를 이용해 Stack과 Queue를 만들어보았다. 끝에서만 항목(item)을 삭제하거나 저장하는 자료구조인 LIFO의 Stack, 양 끝에서 삽입과 삭제가 각각 수행되는 자료구조인 FIFO의 Queue를 몇 가지 특징과 함께 정리해보았다. 나중에 다시 볼 수 있게 나만의 언어로 작성하는 글이라 읽기 불편할 수 있지만... 1. StackStack의 주요 함수는 삽입을 담당하는 push와 삭제를 담당하는 pop이다.기본적으로 자료구조의 끝에서만 삽입과 삭제가 일어나기 때문에 구현하는데에는 그리 어렵지 않았다. push :: list와 KeyData를 입력받아 리스트의 끝에 연결해준다.pop :: 리스트의 끝에 있는 항목을 날려준다.print :: 리스트의 항목들을 보여준다... 2018. 2. 28.
알고리즘 스터디 1회차 - 연결리스트(Linked List) 구현 동아리에서 진행하는 알고리즘 스터디 1회차 과제는 연결 리스트(Linked List) 구현하기이다. 단방향 연결 리스트(Single Linked List), 복합 연결 리스트(Double Linked List), 원 연결 리스트(Circular Linked List)를 구현하는 것이었는데 시간 관계상 단방향과 복합 연결 리스트까지만 만들었다. 기능은 insert, delete, print 세 가지이고, 예외 처리를 거의 안해서 구멍이 송송 뚫려 있는 코드이니... 개념을 다졌다는데에만 의의를 두고 싶다. 아래는 코드 전문이다. 1. 단방향 연결 리스트 (Single Linked List) 12345678910111213141516171819202122232425262728293031323334353637.. 2018. 2. 23.
웹 페이지 파싱 on Android (Jsoup 이용) 전에 했던 Jsoup을 이용한 웹 페이지 파싱(http://usage.tistory.com/4)을 안드로이드 어플 위로 옮겼다. 콘솔창에 뜨던 데이터를 TextView에 뜨게 한게 달라진 점. 안드로이드의 까다로운 제한때문에 쓰레드 찾고 핸들러 찾다가 AsyncTask를 이용한 좋은 예제 강의가 있길래 참고하였다. (참고: http://blog.acronym.co.kr/535) 정상적으로 표시되는 것만 봐도 지금은 행복하다... * MainActivity.java 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727.. 2017. 12. 1.
주소록 만들기 - 자바 스터디 3회차 과제 이번 과제는 파일 입출력을 이용해 주소록을 만들어 보는 것이다. 원래대로라면 FileBufferedReader, BufferedWriter 등을 이용해서 할 생각이었는데, 일단은 Scanner와 PrintWriter만을 이용해서 해보려고 했다. 중간중간 데이터가 깨지고 Scanner가 예상한대로 작동하지 않는 등 몇가지 문제가 있었는데 어찌어찌 동작은 하게됐다. 더러운 부분들은 추후에 수정할 예정. 이번 과제를 하면서 알게된 점이 있는데, Scanner sc = new Scanner(System.in) 과 같은 선언은 한 번만 해야 한다는 것. 하나의 프로세스에는 하나의 IO만 연결된다고 한다. System.in은 시스템으로부터 IO권한을 가져오는 것인데, 시스템은 프로세스한테 하나의 IO만 걸어줄 수 .. 2017. 11. 17.
웹 페이지 파싱 (Jsoup 이용) Jsoup 라이브러리를 사용하여 KBO 공식 사이트에서 팀 순위를 파싱하여 콘솔에 출력하는 코드. 처음 해보는 파싱이라 이것저것 해보는데 신기하다. 아직 데이터 다루기가 어설프고 마음대로 안되는데 갖고 놀다보면 금방 적응될듯. 나중에 안드로이드 어플리케이션에도 적용해 볼 예정. 코드는 계속 수정 중... Jsoup 라이브러리 다운로드 :: https://jsoup.org/download 1차 수정 (17-11-06) :: 처음으로 받아 온 데이터 tex를 두 개의 스트링 버퍼 rank(순위표), winlose(승패표) 로 분리 후 각각 출력. - Main.java12345678910111213141516171819202122232425262728293031323334353637383940414243444.. 2017. 11. 6.