-
ListIterator 인터페이스 활용하기 :: 마이구미Java 2016. 11. 21. 23:21
이번 글은 자바에서 활용할 수 있는 ListIterator 인터페이스를 다룰 것이다.처음보거나 사용해본 적이 없다면 굉장히 유용하게 사용할 수 있다. 백준 알고리즘 사이트 1406번 문제 '에디터'를 접근하면서 알아보겠다. 위 문제를 간략히 살펴보면, 인덱스를 임의대로 이동하면서 삽입 및 수정 등을 처리하는 문제이다.단순히 생각해보자. ArrayList를 쓸까? LinkedList를 쓸까?삽입과 수정을 자유자재로 한다? 이렇게 해석이 가능했다면, 아마 LinkedList를 떠올렸을 거라 생각한다. 잠깐 ArrayList와 LinkedList에 대해 짚고 넘어가자. ArrayList의 경우는 데이터 삽입/삭제 시 임시 배열을 생성하여 데이터를 복사하는 방식으로 구현된다.그렇기에 데이터가 많을수록 성능이 저..
-
문자열 검색 KMP 알고리즘 :: 마이구미알고리즘 2016. 10. 28. 19:11
이번 글은 KMP 알고리즘에 대해 다룰 것이다.KMP 알고리즘이란 무엇인가?이름에 대해서는 큰 의미가 없다. 그냥 사람 이름이다. 백준 5525번, 10769번, 1786번을 풀다가 알게 된 알고리즘이다.유용한 알고리즘이기에 한명이라도 더 알리기 위해 글로 다루게 되었다. (복습 목적이지만..^^) 그렇다면 어떤 알고리즘인가? 어떤 경우에 사용하는 알고리즘인가?시작해보자.시작하기에 앞서 목적은 문자열 검색에 사용되는 알고리즘이다. 문자열 검색의 예를 들어보자.문자열 ABCEDFRIEPQJDNVABRIDFNIABC 라는 문자열이 있을 때 ABCEF라는 문자열을 찾아보자.여러분들은 어떻게 하겠는가?가장 순진한 방법을 말해보겠다. ABCEDABCEFQJDNVABRIDFNIABC ABCEFABCEDFRIEPQJ..
-
백준 10974번 모든 순열 :: 마이구미알고리즘 풀이/수학 2016. 10. 25. 22:08
이 글은 백준 알고리즘 문제 10974번 "모든 순열" 를 풀이한다.perm 알고리즘을 통해 문제를 해결할 수 있다.참고 링크 - https://www.nayuki.io/page/next-lexicographical-permutation-algorithm10974번 - https://www.acmicpc.net/problem/10974 N이 주어졌을 때, 1부터 N까지의 수로 이루어진 순열을 사전순으로 출력하는 프로그램을 작성하시오.첫째 줄부터 N!개의 줄에 걸쳐서 모든 순열을 사전순으로 출력한다. 이번 문제는 테스트 케이스를 보면 1 = array[i]) { i--; } // 마지막 변경이 되었을 때 4321일 경우 i는 위의 접미사 인덱스를 구하는 과정에서 -1이 됨. if (i
-
백준 1021번 회전하는 큐 [Queue] :: 마이구미알고리즘 풀이/스택, 큐 2016. 10. 19. 20:27
이번 글은 백준 1021번 회전하는 큐를 다룰 것이다.정답률 33%정도이지만 쉬운 문제이다.1021번 회전하는 큐 - https://www.acmicpc.net/problem/1021Github - https://github.com/hotehrud/acmicpc 지민이는 N개의 원소를 포함하고 있는 양방향 순환 큐를 가지고 있다. 지민이는 이 큐에서 몇 개의 원소를 뽑아내려고 한다.지민이는 이 큐에서 다음과 같은 3가지 연산을 수행할 수 있다.첫번째 원소를 뽑아낸다. 이 연산을 수행하면, 원래 큐의 원소가 a1, ..., ak이었던 것이 a2, ..., ak와 같이 된다.왼쪽으로 한 칸 이동시킨다. 이 연산을 수행하면, a1, ..., ak가 a2, ..., ak, a1이 된다.오른쪽으로 한 칸 이동시킨..
-
백준 11650번 좌표 정렬하기 :: 마이구미알고리즘 풀이/정렬 2016. 10. 19. 00:45
이번 글은 백준 11650번 좌표 정렬하기 문제를 다룰 것이다.문제는 간단하다.백준 11650번 좌표 정렬하기https://www.acmicpc.net/problem/11650백준 11650번 좌표 정렬하기 2https://www.acmicpc.net/problem/11651 2차원 평면 위의 점 N개가 주어진다. 좌표를 x좌표가 증가하는 순으로, x좌표가 같으면 y좌표가 증가하는 순서로 정렬한 다음 출력하는 프로그램을 작성하시오. 문제에 보다시피 정렬하는 문제이다. 1차원적인 문제라면 정렬 문제는 정말 쉽다. 본인의 경우는 큰 어려움이 없는 한 Arrays.sort()를 통해 처리한다. 하지만 이렇게 2개 이상의 기준을 가진다면 조금 까다롭게 느껴진다. 이전 글에서도 정렬 문제를 다룬 적이 2번 있다...
-
백준 1158번 조세퍼스 문제 :: 마이구미알고리즘 풀이/스택, 큐 2016. 10. 18. 21:04
이번 문제는 백준 1158번 조세퍼스 문제를 다룰 것이다.이미 요세푸스의 문제로 많이 알려져있는 대중화된 문제이다.Github - https://github.com/hotehrud/acmicpc 조세퍼스 문제는 다음과 같다.1번부터 N번까지 N명의 사람이 원을 이루면서 앉아있고, 양의 정수 M(≤ N)이 주어진다. 이제 순서대로 M번째 사람을 제거한다. 한 사람이 제거되면 남은 사람들로 이루어진 원을 따라 이 과정을 계속해 나간다. 이 과정은 N명의 사람이 모두 제거될 때까지 계속된다. 원에서 사람들이 제거되는 순서를 (N, M)-조세퍼스 순열이라고 한다. 예를 들어 (7, 3)-조세퍼스 순열은 이다.N과 M이 주어지면 (N,M)-조세퍼스 순열을 구하는 프로그램을 작성하시오. 본인은 보자마자 그냥 원이니..
-
백준 3053번 택시 기하학 :: 마이구미알고리즘 풀이/수학 2016. 10. 18. 20:28
이번 글은 백준 알고리즘 3053번 "택시 기하학" 을 다뤄본다.문제 이름 그대로 택시 기하학에 관한 문제이다.문제는 아래와 같다. 19세기 독일 수학자 헤르만 민코프스키는 비유클리드 기하학 중 택시 기하학을 고안했다.택시 기하학에서 두 점 T1(x1,y1), T2(x2,y2) 사이의 거리는 다음과 같이 구할 수 있다.D(T1,T2) = |x1-x2| + |y1-y2|두 점 사이의 거리를 제외한 나머지 정의는 유클리드 기하학에서의 정의와 같다.따라서 택시 기하학에서 원의 정의는 유클리드 기하학에서 원의 정의와 같다.원: 평면 상의 어떤 점에서 거리가 일정한 점들의 집합반지름 R이 주어졌을 때, 유클리드 기하학에서 원의 넓이와, 택시 기하학에서 원의 넓이를 구하는 프로그램을 작성하시오. 유클리드 기하학과 ..
-
SOAP? REST? REST API? 무엇인가? :: 마이구미오픈 API 2016. 9. 2. 12:46
이번 주제는 REST API에 관한 글이다. (REST와 RESTful 같다고 생각하자) 이전부터 지금까지 많이 볼 수 있는 트렌드이다. 다들 대략적인 의미는 알고 있을 것이라 생각한다. 이번 글에서는 연관된 것들과 함께 조금 더 자세히 알아보고자한다. 예를 들어, REST API를 다룰려고 하니 ROA, SOA, SOAP, REST 등등 많은 단어들이 연관되어 있다. 궁금했지만 그냥 넘어간 경우가 있을 거라 생각해서 글을 써보려한다. 나 또한 그랬으니.. 사실 글을 쓰는 이유는 .... 회사도 퇴사하고...ㅎ-ㅎ JSCON을 다녀와 나의 무지를 너무나 심각하게 느낀 나머지.. 다시 공부한다는 생각으로 하다보니... 고만하고... 시작해보자. 먼저 API가 무엇인지 알아야한다. 단순히 웹 관점에서 본다면..