본문 바로가기

Code/Java

코딩 인터뷰 완전 분석 210쪽 17.3 변형 문제 풀이 간만에 포스팅인데, 인사이트에서 문제 풀기 이벤트 중이어서 참가해본다.알고리즘 과목 하나 제대로 수강하지 않은 비전공자인 터라 얼마나 엉성하게 보일지는 모르겠지만, 답안이 포스팅인 안되고 있는 관계로 나도 한번 정리해 볼까 하고 몇자 남겨본다.우선 문제는 다음과 같다.자연수 n을 입력받고, n!의 계산 결과 중 마지막에 붙은 연속된 0의 개수와 연속된 0 바로 앞에 나오는 숫자를 구하라.[실행 예]input n: 15 output: 3 8[설명]15!은 1307674368000이므로, 마지막에 연속된 0은 3개이고, 바로 앞의 숫자는 8이다.* 조건 *n의 범위는 1 이상, 10000 이하입니다.테스트 입력은 다음과 같습니다. 20! = 2432902008176640000 30! = 26525285981.. 더보기
자바를 이용한 DB 프로그래밍 기초 - mysql 자바에서 DB를 이용한 프로그래밍은 JDBC라는 표준 인터페이스 덕분에, 벤더에 (거의) 상관없이 동일한 형태로 구현할 수 있다. 따라서 자바를 이용한 DB 프로그래밍은 JDBC를 어떻게 이용하느냐의 문제라고 할 수 있다. JDBC를 이용한 프로그래밍은, 아래와 같은 순서로 작성된다. 1. 벤더(mysql, PostgreSQL, ms-sql, oracle 등) 사이트에서 제공하는 JDBC 드라이버를 먼저 구해야 한다. mysql 같은 경우에는, 아래 링크와 같다. http://www.mysql.com/downloads/connector/j/ 2. 이클립스에서 해당 라이브러리를 빌드패스에 추가한다. 3. 여기서 프로그램을 작성하는데, 3-1. 드라이버를 로드한다. (mysql의 경우) Class.forNa.. 더보기
subclipse on OSX eclipse에서 subversion을 사용하기 위한 유용한 플러그인 subclipse. 맥으로 스위칭 하고 난 이후, subclipse를 설치하고 났더니, 이게 왠 걸 실행이 되지를 않는다. 이유는 javahl 이라고 java와 subversion를 이어주는 라이브러리가 있는데, 이게 맥에 설치가 안 되어있기 때문이란다. 좀 더 자세히 이야기하자면, 기본 설치된 버젼은 javahl 이 32비트용만 깔려있는데, 맥에서 보통 이클립스를 64비트용으로 돌린다는 것이다. 그래서 해결책은 아래 링크와 같이 MacPorts를 이용해서 subversion-javahlbindings 패키지를 설치하면 해결된다. 구글링하다보면, (이클립스 상에서 오류가 나서 연결된 페이지를 보면) http://www.open.coll.. 더보기
[이클립스] 라이브러리 이용하기 자바를 이용하여 프로그램을 개발하는 경우, 라이브러리 (다른 사람이 작성한 유용한 프로그램 모음)를 활용하는 경우가 많다. 자바 IDE인 이클립스에서는 손쉽게 라이브러리를 적용할 수 있는데, 그 방법을 살펴보면 다음과 같다. (예시의 편의성을 위해서 엑셀 파일을 컨트롤 할 수 있는 jxl 라이브러리를 설정하는 과정을 서술하였다. 일반적인 방법이므로 다른 라이브러리를 사용할 때도 같은 방식으로 이용하면 된다.) 1. 라이브러리를 찾는다. - 구글에서 검색하는 것이 좋다. - “java library excel”과 같이 검색하면 된다. - http://jexcelapi.sourceforge.net/ - http://www.andykhan.com/jexcelapi/ - http://sourceforge.net.. 더보기
JDBC ResultSet 데이터 없을 경우 체크하기 JDBC를 이용한 DB 이용 프로그램을 작성하다보면, 쿼리문에 따라서 결과가 나오지 않는 경우가 있다. (ResultSet에는 hasNext()같은 메소드가 없다.) 예전에는 SQL의 count 함수를 이용하여, 갯수를 먼저 센 후, 0일때와 아닐때로 구분하여 작성했던 기억이 있기도 하다. 하지만, 워낙 번거롭기도하고, 뭔가 다른 방법이 있을 것 같아서 찾아보니 아래와 같은 방법으로 하면 손쉽게 해결할 수 있었다. ResultSet에서는 next()함수를 while의 조건문 안에 두어, 반복을 수행하는 데, while 문 대신 if문으로 먼저 검사한 후, 그 다음부터 while문을 이용하면 된다. 즉, while문을 if + do-while로 대치하게 된다. 실제적인 예는 아래 출처에서 살펴보도록 하자... 더보기
우분투에서 자바 설정 (OpenJDK 대신 Sun JDK 쓰기) 우분투에서는 기본적으로 GNU의 자바를 쓰고 있다. 일부에서는 퍼포먼스에 문제가 있다고 하고, 혹자는 이클립스 플러그인 설치 때 문제가 생기는 등 안정성에 문제가 있다고 한다. 보통 sun에서 받아서 사용하는(이제는 oracle이지만) 자바를 사용하기 위한 셋팅 방법에 대해 메모하고자 한다. 크게 2단계로 설명할 수 있다. 1. JDK 설치 2. Open JDK 대신 Sun JDK를 default로 설정 먼저, JDK 설치는 우분투답게 아주 쉽다. '우분투 소프트웨어 센터'에서 'sun java'로 검색하여 'sun-java6-jdk'을 설치하도록 하자. 다음으로, 시스템 기본으로 sun 자바를 이용하도록 'sudo update-java-alternatives -s java-6-sun'라고 설정한다. 그.. 더보기
우분투에서 이클립스 셋팅 (한글) 1. 한글 깨짐 - Window > Preference > General > Content type - 인코딩을 "euc-kr"로 설정하자. (또는 "KSC5601", "UTF-8") - 이클립스를 다시 띄우자. - 첫번째 링크 참고 2. JDK 설정은 open jdk가 아닌 sun 버전으로 - eclipse.ini 파일을 고치자. - "-vm /usr/lib/jvm/java-6-sun/bin/java" - 두번째 참고링크를 참고 - 빠르게 따라하기!! 3. content assist가 다르게 맵핑되어 있다고 한다. - Preferences -> General -> Editors -> Keys 에서 키 셋팅을 새로 하자. - 세번째 참고링크 참고 4. 이클립스 플러그인 - 역시 세번째 링크 참고 - 내가.. 더보기
경량 DBMS 사용하기 데이터처리하는 프로그램을 작성하다보면, 데이터베이스를 이용하면 좀 더 간편하게 해결되는 문제들을 접하게 된다. 이런 경우에 DB 사용을 고려하지만, 설치 및 배포의 문제로 인하여(간단한 배치프로그램을 위해서 서버에 계정만들고, DB만들어서 자료처리하는 것이 번거롭다는 것), 경량 DB (보통 file기반 DB)라는 대안을 찾게 되었다. 물론 최근에 아이폰 개발 책을 보면서, 데이터처리를 위해서 sqlite를 쓴다는 것을 보면서, 간단한 프로그램을 만들때도 경량 DB를 임베드하는 형태로 개발하면 좋겠구나 생각이 들었다. 자바에서 이용할 수 있는 경량 DB로 sqlite를 염두해두고 googling를 했는데, Derby라는 아파치 프로젝트의 산출문이 더 낫다는 의견을 접할 수 있었다. 이에 간단하게 코드를 .. 더보기
Java 코드 내부에서 외부 프로그램 실행시키기 - exec(), ProcessBuilder Runtime.exec()와 ProcessBuilder 클래스를 이용하여, 구현할 수 있다. 그리고 apache 프로젝트에 'apache common exec'라는 라이브러리도 있다고 한다. 경험상 외부 프로그램 실행시에는 현재 실행 위치가 잘 안 먹는 경향이 있으니, 절대 경로를 이용해서 명령을 내려주는 것이 여러모로 편하다. String binDir_ = System.getProperty("user.dir") + "/exec/node3d/"; String[] cmdArray = new String[] { binDir_ + "nodes3d.exe", System.getProperty("user.dir") + "/" + inputFile }; try { Process p = new ProcessBuild.. 더보기
Java System Property 자바에서 외부 프로그램을 실행시키는 경우, 경로가 잘 안 먹는 경우가 생긴다. 이에 절대 경로를 적어주기 위해서 현재 위치를 알아야 하는 데, 현재 위치는 다음과 같이 System Property에서 구할 수 있다. System.getProperty("user.dir") 프로퍼티 속성은 다음 링크의 테이블을 참조하면 된다. http://blog.naver.com/strong_will/60059797418 더보기