본문 바로가기

분류 전체보기218

알고리즘 스터디 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.
로또 생성기 - 자바 스터디 2회차 과제 1회차 과제보다 어려워서 삽질을 좀 많이 한 것 같다. 문제에서는 contains를 이용해 비교하는 것을 의도한것 같지만 안되길래 어레이가 가지고 있는 값들을 일일히 비교시켰다. 어차피 시간 복잡도는 같을테니까 상관 없겠지...? 만들때 생각해야 하는건 자동으로 뽑은 로또 번호들이 sort 되어서 나온다는 점, ArrayList 안에 ArrayList 를 넣어서 ArrayList 같은 이상한 걸 만들어서 쓴다는 점 정도 있는듯. 코드 리뷰 후 수정 : 수입률 자료형 수정(int → long), ArrayList형을 ArrayList형으로 선언, 중구난방했던 static 변수 수정, 캡슐화, Scanner 하나로 재사용, 필요 없던 메서드 삭제 ● 프로젝트 폴더 구성 ● LottoMain.java12345.. 2017. 10. 13.