전체 글 138

텍스트 파일 읽어오기 - (JAVA)

텍스트 파일에 아래와 같은 내용이 들어있다.코드명과 값이 세미콜론으로 구분되어있는 상황. code.txt CODE001;firstCODE002;secondCODE003;third 이 파일을 읽어오고 출력해볼 것이다. 1) 텍스트 파일 저장 파일 저장 위치는 src/main/resources 밑에 저장한다. 나는 src/main/resources/test/code.txt위의 경로에 저장했다. 2) 파일 읽어오기 인풋스트림으로 파일을 읽어와서 세미콜론(;)으로 잘라서 출력한다. public void readFile() throws IOException { InputStream is = getClass().getClassLoader().getResourceAsStream("test/code.txt"); Buf..

개발/JAVA 2014.01.11

일부 IE 브라우저에서 스크립트 동작 안하는 경우

익스플로러 10을 사용하는 컴퓨터 중 일부에서 자바스크립트가 동작하지 않는다고 했다.크롬에서는 잘되고, IE 10 쓰는사람 중에서도 잘 되는 경우도 있었다. 원인은 호환성보기 때문이었다.호환성 보기 말고 Explorer 10을 선택하고 보면 잘 동작한다. 호환성보기를 선택하면 기본적으로 IE 7 환경으로 보게 된다. 호환성 보기를 선택한 사용자들을 위해 페이지의 태그안에 다음 코드를 넣으면 호환성보기를 선택했더라도 선택 안한 것과 같이 동작한다

개발/ETC 2013.12.01

[C++] 소수 구하기 최적의 알고리즘 (2) - 에라토스테네스의 체

소수 구하기 최적의 알고리즘 1편에서 (http://marobiana.tistory.com/89) 주어진 수보다 작은 수의 소수들로 나누는게 성능이 좋다고 했었는데, 그것보다 더 좋은 알고리즘을 찾아냈다.ㅋㅋ 이것보다 더 좋은 방법은 아마도 없을 것이라 자신함 !! 만약 있다면 댓글 달아주시기 바람. 요번에는 c++로 구현해보았음. 1. 알고리즘 에라토스테네스의 체 (Sieve of Eratosthenes)라는 알고리즘이다. 아래 그림을 보면 무엇인지 알 수 있다. 120까지의 모든 소수를 구한다고 해보자. 2부터 120까지 배열에 모두 넣은 후 소수가 아닌 것들을 모두 체크해버리는 것이다. 2를 제외한 모든 2의 배수를 체크한다. 3을 제외한 모든 3의 배수를 체크한다. 4는 아까 체크당했으므로 소수 ..

[C++] 두 정수 사이의 모든 합 구하기

어제 올린 글에는 최적화를 생활화하자는 글을 썼었는데, 오늘은 반대로 최적화를 잘못하면 화를 부를 수 있다는 것을 정리해보고자 한다ㅋㅋㅋㅋ 1. 문제 두 정수 사이의 모든 합을 구하는 것이다. 3, 5를 입력받으면 3 + 4 + 5 를 한 결과를 출력하면 됨. 작은 수부터 입력 받는다고 가정하자. 2. 알고리즘 가장 먼저 생각할 수 있는 알고리즘은 입력 받은 수부터 두번째 입력 받은 수 까지 반복문 돌리면서 더하는 것이다. 반복문을 좀 줄여본다면??? 1 + 2 + 3 + 4 + 5 + 6 를 보면 규칙을 찾을 수 있다. 1 + 6 = 7 2 + 5 = 7 3 + 4 = 7 이것을 이용하면, 포문을 반으로 줄일 수 있다! 여기서 잠깐, 더할 수의 개수가 홀수이면 이렇게 된다. 1 + 2 + 3 + 4 +..

[JAVA] 소수 구하기 최적의 알고리즘 (1)

한달 전에 면접에서 소수를 손코딩하라는 명을 받았다. (인성면접이라는 훼이크에 당해버렸음 @_@) 소수에 대해서는 깊이 생각해본적이 없었는데..이번일을 계기로 더더욱 최적의 방법을 생각하는 버릇을 들이겠다는 다짐을 하게되었다. 1. 소수(Prime Number)란 무엇인가? 2, 3, 5, 7, 11, 13, 17.... 약수가 1과 자기 자신 뿐인 수이다. 2. 소수를 어떻게 구할까? (알고리즘) 약수가 1과 자신뿐인 것을 확인해야한다. 그러려면??? 즉, 자기 자신보다 작은 수들을 나누어봐서, 하나라도 나누어지면 소수가 아닌 것이다.(어떤 수의 배수이면 안된다는 것) 보통은 여기까지만 생각하고 코딩을 시작할 것이다.그런데 조금만 더 생각해보면 더 좋은 방법이 있다. 일단은 이대로 코딩을 시작해봄 ㄱㄱ..

[Spring MVC + Maven] Project 생성하기

맨날 시니어개발자분들이 만든 환경에서만 개발해봤지 혼자 해본적이 없어서세팅을 해봤는데, 패키지 설계부터 뭘 어떻게 해야할지 막막했다. 프로젝트 만드는거에서부터 삽질을 했다 그래서 정리를 해보겠다.(MAC환경에서 했으나 다를건 없을 것이다) 환경 세팅 1. STS 다운로드 STS에는 메이븐 플러그인이 기본으로 깔려있으므로 이걸로 설치. http://spring.io/tools/sts/all 2. Tomcat 다운로드 원하는 버전의 톰캣 다운로드. (나는 7을 받았음) http://tomcat.apache.org/download-70.cgi 이제 본격적으로 프로젝트 생성하기 위에있는 동그라미 아이콘을 누른 후(Dashboard) Spring Project를 클릭한다. 아래와 같은 창이 뜨면, 프로젝트 이름 ..

개발/Spring 2013.09.20

[maven] open 라이브러리들 프로젝트에 추가하는 법

아래 사이트 가서 http://mvnrepository.com/plugins.html 원하는 라이브러리를 검색하면버전들이 쫙 나타난다. 원하는 버전을 클릭한 후 maven 탭에 있는 내용들을 쫙 복사해서 org.springframeworkspring-orm3.2.4.RELEASE pom.xml에 추가해놓으면 끝 라이브러리의 저장된 로컬 위치는c:\사용자\사용자명\.m2\repository 안에 패키지 구조에 따라 들어있다.

개발/ETC 2013.09.13

[JAVA] Insertion Sort (삽입정렬)

1. Insertion Sort 개념 아래와 같은 순서로 카드가 놓여져 있다고 생각해보자. 4 5 3 2 (1)4 5 3 2 2번째부터 기준이 되어 시작한다. (왼쪽과 비교해야 하므로 2번째부터 시작한다)기준인 5와 그 왼쪽인 4를 비교하니 5가 더 크므로 냅둔다. 4 5 3 2 이 알고리즘은 특성상, 기준의 왼쪽 값들은 모두 정렬이 되어있다. (2)4 5 3 2 그 다음 기준은 3번째가 되었다.바로 왼쪽 값과 비교한다. 3이 5보다 작기에, 큰 값인 5를 기준 자리에 밀어 넣는다.(여기서 회색부분은 비어있는 자리라고 생각하면 됨) 4 5 2 3 이번엔 기준과, 그 왼쪽인 4와 비교한다. 기준값이 4보다 작으므로, 위에서처럼 4를 오른쪽으로 밀어 넣는다. 4 5 2 이제 비교대상이 없어졌으므로 비어있는 ..

C++ 의 virtual 함수. 가상화. JAVA랑 C++의 차이점

가상화에 대해서 검색해보다가 사소하게 생각하며 지나친 부분에대해 새로이 알게됐다.C++에 있는 virtual 키워드의 용도, 그리고 JAVA와의 차이점을 알게 되었다. 1. C++에서의 상속 class Parent { public : Parent(){}; ~Parent() {}; void foo() { std::cout > parent!!! Parent* p = new Child(); 이 것을 통해 불려진 foo함수에서, child의 foo가 아닌 parent의 foo가 호출되는 것을 볼 수 있다.이유는, 컴파일러가 포인터의 타입을 보고 타입에 맞는 메소드를 찾아주기 때문이다. 그러나, 부모의 foo 메소드 앞에 virtual 이라는 키워드를 붙인다면???부모가 아닌 child의 foo 메소드가 호출된다..

개발/JAVA 2013.07.26

[JAVA] 재귀 - 이진트리(Binary Tree)의 순회

앞에 글에서 이진탐색트리의 삽입을 구현했었다. 이진탐색트리 삽입 (1) - http://marobiana.tistory.com/81이진탐색트리 삽입 (2) - http://marobiana.tistory.com/82 이번에는 순회에 대해 짜볼 것이다.사실 이걸 정리하고 싶었을 뿐인데, 이진탐색트리 삽입이 더 복잡해서 거기서 시간 다보냄 ㅎㅎ 요번건 소스가 아주 간단함. 1. 이진트리 순회 방법컴공 2학년 때 자료구조에서 배우는 요것.. 순회 방법에는 3가지가 있다.각 순회방법으로 갔을 때 순서를 적어보겠다. - Pre order (전위) : Root부터 왼쪽 모든 노드 탐색 후 오른쪽 24 15 2 19 28 27 30 - In order (중위) : 맨 왼쪽 아래노드부터 Root, 오른쪽 2 15 19..