전체 글
-
요즘 이클립스를 사용하다가 뻔히 잘 사용하던 자바 파일이 갑자기 열리지 않는 경우가 발생했다. 그냥 text editor를 이용해서 열면 열리는데 Java editor로 열면 위와 같은 오류가 발생한다. 추정하는 결론으로는 아마도 작성할 당시는 컴파일도 되고 실행도 상관 없으므로 문법상은 오류는 없는데 이클립스가 해당 코드를 파싱하지 못해서 발생하는것 같다. 필자의 경우 빈 주석을 사용하니까 위 오류가 발생했다. static int[][] map;// 위와 같은 코드를 사용하니 아래의 오류가 발생하고 java editor로는 열리지 않는 오류가 발생한다. 아. 현재 사용하고 있는 이클립스는 STS 4.5.1 버전이다. 추가적으로 다른 소스에도 동일한 문제가 발생해서 정리한다. 수정한 예들 1. _를 이용..
[eclipse] bug:Failed to create the part's controls요즘 이클립스를 사용하다가 뻔히 잘 사용하던 자바 파일이 갑자기 열리지 않는 경우가 발생했다. 그냥 text editor를 이용해서 열면 열리는데 Java editor로 열면 위와 같은 오류가 발생한다. 추정하는 결론으로는 아마도 작성할 당시는 컴파일도 되고 실행도 상관 없으므로 문법상은 오류는 없는데 이클립스가 해당 코드를 파싱하지 못해서 발생하는것 같다. 필자의 경우 빈 주석을 사용하니까 위 오류가 발생했다. static int[][] map;// 위와 같은 코드를 사용하니 아래의 오류가 발생하고 java editor로는 열리지 않는 오류가 발생한다. 아. 현재 사용하고 있는 이클립스는 STS 4.5.1 버전이다. 추가적으로 다른 소스에도 동일한 문제가 발생해서 정리한다. 수정한 예들 1. _를 이용..
2020.03.20 -
* 본 포스팅은 인사이트 프로그래밍대회에서 배우는 알고리즘 문제해결 전략을 참조해서 작성되었습니다. 다음으로는 '비교해보지 않고도 알수 있는 것이 있다'는 KMP에 대해 알아보자. 이 알고리즘은 Knuth-Morris-Pratt 세 사람의 이름을 딴 알고리즘이다. Brute Force는 한 칸씩 이동하면서 비교하기 때문에 불필요한 비교 회수가 많이 발생하는데 이를 줄여서 연산을 빠르게 수행하는것이 K.M.P 알고리즘이다. KMP는 패턴 비교 과정에서 발생한 부분일치 문자열을 버리지 않고 건너뛸 수 있는 기회로 사용한다. 다음 그림을 살펴보자. 타겟과 패턴 문자열을 비교해보니 처음 비교에서 7번째에서 불일치가 발생했다. Brute Force방식을 적용한다면 이후 한 칸씩 패턴을 이동시켜보면서 타겟과의 일치..
문자열 패턴 매칭 3 - KMP* 본 포스팅은 인사이트 프로그래밍대회에서 배우는 알고리즘 문제해결 전략을 참조해서 작성되었습니다. 다음으로는 '비교해보지 않고도 알수 있는 것이 있다'는 KMP에 대해 알아보자. 이 알고리즘은 Knuth-Morris-Pratt 세 사람의 이름을 딴 알고리즘이다. Brute Force는 한 칸씩 이동하면서 비교하기 때문에 불필요한 비교 회수가 많이 발생하는데 이를 줄여서 연산을 빠르게 수행하는것이 K.M.P 알고리즘이다. KMP는 패턴 비교 과정에서 발생한 부분일치 문자열을 버리지 않고 건너뛸 수 있는 기회로 사용한다. 다음 그림을 살펴보자. 타겟과 패턴 문자열을 비교해보니 처음 비교에서 7번째에서 불일치가 발생했다. Brute Force방식을 적용한다면 이후 한 칸씩 패턴을 이동시켜보면서 타겟과의 일치..
2020.02.28 -
Michael O. Rabin과 Richard M. Karp가 함께 만든 이 알고리즘은 문자열 검색을 위해 해쉬값 함수를 이용한다. 매번 문자 하나씩 비교하지 않고 패턴의 해쉬와 부분 문자열의 해쉬만을 비교하기 때문에 상당히 빠른 성능을 보여주고 구현도 쉬운 편이다. 해쉬값의 생성 해쉬값은 문자들에 어떤 가공을 해서 일정한 패턴으로 만들어내는 값으로 문자열이 가지고 있는 hashCode와는 다른 값이다. 패턴의 해쉬값은 당연히 고정되어있다. 비교 대상인 문자열의 해쉬값은 패턴 불일치로 대상 범위가 달라질 때마다 매번 계산되어야 한다. 이때 계산되는 해쉬는 아주 빠른 시간에 처리되어야 하고 새로 들어오는 문자와 나가는 문자의 처리에서 일관성이 있어야 한다. 이를 위해 패턴은 통상 아래 수식으로 계산된다. ..
문자열 패턴 매칭 2 - Rabin KarpMichael O. Rabin과 Richard M. Karp가 함께 만든 이 알고리즘은 문자열 검색을 위해 해쉬값 함수를 이용한다. 매번 문자 하나씩 비교하지 않고 패턴의 해쉬와 부분 문자열의 해쉬만을 비교하기 때문에 상당히 빠른 성능을 보여주고 구현도 쉬운 편이다. 해쉬값의 생성 해쉬값은 문자들에 어떤 가공을 해서 일정한 패턴으로 만들어내는 값으로 문자열이 가지고 있는 hashCode와는 다른 값이다. 패턴의 해쉬값은 당연히 고정되어있다. 비교 대상인 문자열의 해쉬값은 패턴 불일치로 대상 범위가 달라질 때마다 매번 계산되어야 한다. 이때 계산되는 해쉬는 아주 빠른 시간에 처리되어야 하고 새로 들어오는 문자와 나가는 문자의 처리에서 일관성이 있어야 한다. 이를 위해 패턴은 통상 아래 수식으로 계산된다. ..
2020.02.28 -
워드프로세서등을 사용하다가 Ctrl + F 를 이용해서 특정 키워드 즉 문자열을 검색해본 경험이 모두들 한번씩은 있을 것이다. 이때 내가 원하는 문자열을 찾는 것을 문자열 패턴 매칭이라고 한다. 미리 밝혀두지만 일상 생활에서는 아주 유용하게 사용되는 기능이지만 APS에서는 한정된 알고리즘을 알면 대부분 풀리는 문제들이기 때문에 출제의 빈도는 매우 낮은 편이고 알고리즘 복잡도는 높다. 바쁜 경우는 생략하는 것도 좋은 선택이다. 문자열 패턴 매칭의 방법은 크게 4가지 정도가 활용된다. - Brute Force - Rabin-Karp - K.M.P - Boyer Moore 이중에 Brute Force, Rabin-Karp, KMP 3가지 방법에 대해서 알아보자. 이번 포스트에서는 각 방법을 사용해보면서 백준의..
문자열 패턴 매칭 1 - Brute Force워드프로세서등을 사용하다가 Ctrl + F 를 이용해서 특정 키워드 즉 문자열을 검색해본 경험이 모두들 한번씩은 있을 것이다. 이때 내가 원하는 문자열을 찾는 것을 문자열 패턴 매칭이라고 한다. 미리 밝혀두지만 일상 생활에서는 아주 유용하게 사용되는 기능이지만 APS에서는 한정된 알고리즘을 알면 대부분 풀리는 문제들이기 때문에 출제의 빈도는 매우 낮은 편이고 알고리즘 복잡도는 높다. 바쁜 경우는 생략하는 것도 좋은 선택이다. 문자열 패턴 매칭의 방법은 크게 4가지 정도가 활용된다. - Brute Force - Rabin-Karp - K.M.P - Boyer Moore 이중에 Brute Force, Rabin-Karp, KMP 3가지 방법에 대해서 알아보자. 이번 포스트에서는 각 방법을 사용해보면서 백준의..
2020.02.28 -
알고리즘 문제를 풀이하는 과정에서 디버거의 사용을 필수이다. 이때 Variables 항목에서 변수들의 값을 볼 수 있다. 하지만 top 변수에 대해서 궁금한 것은 top이라는 변수의 타입이 아니라 top이 어떤 값을 가지고 있는가이다. 물론 이 정보를 확인하기 위해서는 >를 클릭하면 확인할 수 있지만 매우 귀찮은 일이다. path, stack과 같은 객체들도 마찬가지다 실제로 어떤 내용이 담겨있는지가 중요한 정보이다. 고맙게도 이클립스에는 출력 내용을 재정의할 수 있는 기능을 제공해준다. windows > preferences > java > debug > detail formatters 메뉴를 이용해보자. 하단의 Show variable details 부분에 'As the label for variab..
[eclipse] 디버거의 value 출력 변경알고리즘 문제를 풀이하는 과정에서 디버거의 사용을 필수이다. 이때 Variables 항목에서 변수들의 값을 볼 수 있다. 하지만 top 변수에 대해서 궁금한 것은 top이라는 변수의 타입이 아니라 top이 어떤 값을 가지고 있는가이다. 물론 이 정보를 확인하기 위해서는 >를 클릭하면 확인할 수 있지만 매우 귀찮은 일이다. path, stack과 같은 객체들도 마찬가지다 실제로 어떤 내용이 담겨있는지가 중요한 정보이다. 고맙게도 이클립스에는 출력 내용을 재정의할 수 있는 기능을 제공해준다. windows > preferences > java > debug > detail formatters 메뉴를 이용해보자. 하단의 Show variable details 부분에 'As the label for variab..
2020.01.30 -
Git을 이용하려면 pull/push 과정에서 로그인 정보를 매번 입력해야 하는데 여간 귀찮은 일이 아니다. Eclipse의 경우 Store in Secure Store에 체크하고 계정 정보를 저장해 놓으면 이 귀찮은 일도 안녕이다. 처음 정보를 저장하면 master password를 생성할 것인지 물어보는데 굳이 거기까지는 필요 없을듯 하다. No를 선택해주자. 문제는 불가피하게 자리를 바꾸는 일이 발생한다면 위 정보도 지워줘야 한다. 이 정보는 window > preferences > general > security > secure storage 에서 찾아볼 수 있다. Contents의 Default Secure Storage에 Git 이 있는데 여기에 계정 정보가 저장된다. 당연히 Delete 를..
Eclipse에 Git 로그인 정보 저장 및 삭제Git을 이용하려면 pull/push 과정에서 로그인 정보를 매번 입력해야 하는데 여간 귀찮은 일이 아니다. Eclipse의 경우 Store in Secure Store에 체크하고 계정 정보를 저장해 놓으면 이 귀찮은 일도 안녕이다. 처음 정보를 저장하면 master password를 생성할 것인지 물어보는데 굳이 거기까지는 필요 없을듯 하다. No를 선택해주자. 문제는 불가피하게 자리를 바꾸는 일이 발생한다면 위 정보도 지워줘야 한다. 이 정보는 window > preferences > general > security > secure storage 에서 찾아볼 수 있다. Contents의 Default Secure Storage에 Git 이 있는데 여기에 계정 정보가 저장된다. 당연히 Delete 를..
2020.01.30 -
노트북으로 작업을 하다 습관적으로 뚜껑을 닫고 자러갈 때가 많다. 왜냐하면 자동으로 절전모드로 빠져서 다음날 이어서 작업할 수 있기 때문이다. 그런데 왠걸.. 아침에 보면 노트북의 팬이 맹렬히 돌고 있고 노트북을 사용하려 해도 전혀 반응이 없다. 일차적으로 할 수 있는 방법은 강제 종료였다. 전원 버튼을 4초 이상 꾹 누르면 종료된다. 하지만 왠지 강제 종료라 마음이 편하지 않다. 이때 제어판 -> 전원옵션 -> 전원 단추 작동 설정 -> 종료 설정에서 빠른 시작 켜기(권장)을 끄면 해결!
[Windows]노트북이 절전모드로 가지 않을 때노트북으로 작업을 하다 습관적으로 뚜껑을 닫고 자러갈 때가 많다. 왜냐하면 자동으로 절전모드로 빠져서 다음날 이어서 작업할 수 있기 때문이다. 그런데 왠걸.. 아침에 보면 노트북의 팬이 맹렬히 돌고 있고 노트북을 사용하려 해도 전혀 반응이 없다. 일차적으로 할 수 있는 방법은 강제 종료였다. 전원 버튼을 4초 이상 꾹 누르면 종료된다. 하지만 왠지 강제 종료라 마음이 편하지 않다. 이때 제어판 -> 전원옵션 -> 전원 단추 작동 설정 -> 종료 설정에서 빠른 시작 켜기(권장)을 끄면 해결!
2019.12.25 -
자바 API에서 FIFO를 처리하기 위해 Queue를 사용할 수 있는데 유사한 메서드들이 있어서 차이점을 정리하고 가보자. Queue에 데이터를 추가, 삭제, 검색할 때 제공되는 메서드들의 차이는 기능적인 것은 아니며 문제 상황에서 예외를 던지느냐 아니면 null 또는 false를 반환하느냐에 있다. 예외 발생 값 리턴 추가(enqueue) add(e) offer(e) 삭제(dequeue) remove() poll() 검사(peek) element() peek() 즉 enqueue 동작 처리를 위해서 데이터를 추가해야하는데 이미 큐가 꽉 찬 경우 add는 예외를 발생시키지만 offer는 추가 실패를 의미하는 false를 리턴한다.
[자료구조]Queue - add vs offer자바 API에서 FIFO를 처리하기 위해 Queue를 사용할 수 있는데 유사한 메서드들이 있어서 차이점을 정리하고 가보자. Queue에 데이터를 추가, 삭제, 검색할 때 제공되는 메서드들의 차이는 기능적인 것은 아니며 문제 상황에서 예외를 던지느냐 아니면 null 또는 false를 반환하느냐에 있다. 예외 발생 값 리턴 추가(enqueue) add(e) offer(e) 삭제(dequeue) remove() poll() 검사(peek) element() peek() 즉 enqueue 동작 처리를 위해서 데이터를 추가해야하는데 이미 큐가 꽉 찬 경우 add는 예외를 발생시키지만 offer는 추가 실패를 의미하는 false를 리턴한다.
2019.12.22