티스토리 툴바



'개발/JAVA'에 해당되는 글 4

  1. 2011/10/07 가장 얇은 지갑 만들기
  2. 2011/10/07 Palindrome
  3. 2011/09/01 JAVA 메모리 영역 구조
  4. 2011/09/01 Vector와 ArrayList의 비교

가장 얇은 지갑 만들기

크리에이티브 커먼즈 라이선스
Creative Commons License
1만원, 7만원, 11만원, 17만원권 지폐가 있다. 원하는 액수를 입력하면, 가장 얇은 지갑을 만들 수 있도록, 지폐의 갯수를 최소화 한 구성을 보여주는 프로그램을 작성하시오.

<예>
   입력값 150000 인 경우 가장 좋은 구성은 7만원 2장, 1만원 1장으로 총 3장이다.

<입/출력>
  • 입력 : 프로그램의 첫번째 인자로 숫자를 받는다.
    예) 입력값에 오류는 없다고 가정한다. 즉, 135000원 같이 구성 불가능한 입력값은 없다.
    별도로 오류 처리를 할 필요 없음
  • 출력 :
    예) 1만원 x장, 7만원 x장, 11만원 x장, 17만원 x장

더보기

저작자 표시 비영리 변경 금지

'개발 > JAVA' 카테고리의 다른 글

가장 얇은 지갑 만들기  (0) 2011/10/07
Palindrome  (0) 2011/10/07
JAVA 메모리 영역 구조  (0) 2011/09/01
Vector와 ArrayList의 비교  (0) 2011/09/01
트랙백0 댓글0

Palindrome

크리에이티브 커먼즈 라이선스
Creative Commons License
Palindrome(이하 회문)은 앞/뒤 어느쪽으로 읽어도 같은 말이 되는 어구를 의미한다.
예) 191, 4325234, 123321, eye

어떤 수를 받아서 그 수를 뒤집은(reverse) 다음 원래의 수에 더하여 나온 값이 회문이 될 때까지, 뒤집은 수 더하기를 반복하여 회문을 찾는 프로그램을 작성하라.

<예>
입력값이 195인 경우
  1) 195 + 591 = 786
  2) 786 + 687 = 1473
  3) 1473 + 3741 = 5214
  4) 5214 + 4125 = 9339
출력 : 195 4 9339

<주의사항>
  • 회문을 찾을 수 없는 수도 있다.
    예) 아직 증명되지는 않았지만 196은 회문을 찾을 수 없는 수 이다.
  • 뒤집어 더하는 것을 100번 해도 회문을 찾을 수 없는 경우는 회문이 없다고 가정한다.

<입/출력>
  • 입력 : 프로그램의 첫번째 인자로 숫자를 받는다.
    예) 입력값에 오류는 없다고 가정한다. 즉, 오류처리를 할 필요가 없다.
  • 출력 : 입력받은 숫자와 회문ㅇ르 발견하기 위해 뒤집어 더한 횟수, 그리고 구해진 회문
    예) 195 4 9339
    예) 196 is not palindrome 

소스보기


저작자 표시 비영리 변경 금지

'개발 > JAVA' 카테고리의 다른 글

가장 얇은 지갑 만들기  (0) 2011/10/07
Palindrome  (0) 2011/10/07
JAVA 메모리 영역 구조  (0) 2011/09/01
Vector와 ArrayList의 비교  (0) 2011/09/01
트랙백0 댓글0

JAVA 메모리 영역 구조

크리에이티브 커먼즈 라이선스
Creative Commons License
JAVA 메모리 영역 구조
  • JVM은 힙을 다음과 같이 3개의 영역으로 나누고 있다.
    1. Permanent Space : JVM 클래스와 메소드 개체를 위해 쓰인다.
    2. Old Object Space : New 영역에서 count를 세어서 어느정도 증가된(만들어진지 좀 된) 개체를 위해 쓰인다.
    3. New(Young) Object Space : 새로 생성된 개체들을 위해 쓰인다.


New Object Space는 다시 3개의 부분으로 나누어 지는데, 모든 새로 생성된 개체들이 가는 Eden(에덴동산)과 그 개체들이 Old Generation으로 가기 전 생존해 있는 Survivor Space(From, To) 1과 2가 있다.

Old Generation이 어느정도 차 있거나 특정 Time이 지나면 GC가 발생한다.
이 때, 참조가 있는 개체는 GC가 일어나더라도 남아있게 되는데 계속해서 쌓이면 Out of Memory Error가 발생하게 된다.

저작자 표시 비영리 변경 금지

'개발 > JAVA' 카테고리의 다른 글

가장 얇은 지갑 만들기  (0) 2011/10/07
Palindrome  (0) 2011/10/07
JAVA 메모리 영역 구조  (0) 2011/09/01
Vector와 ArrayList의 비교  (0) 2011/09/01
트랙백0 댓글0

Vector와 ArrayList의 비교

크리에이티브 커먼즈 라이선스
Creative Commons License


Vector와 ArrayList는 List 계열의 컬렉션이다. List 계열이기 때문에 둘은 아주 비슷한 성질을 가지고 있다. 일단 Vector와 ArrayList에 대한 공통점을 정리하면 다음과 같다.

  • Vector와 ArrayList의 공통점
    • 순서가 있는 Collection이다.
    • List 인터페이스를 구현하고 있다.
    • 데이터를 중복해서 포함할 수 있다.
Vector와 ArrayList는 배열을 클래스로 만들었다고 보면 된다. 배열과 다른 점은 배열은 정해진 크기만큼만 사용하지만 Vector와 ArrayList는 데이터를 추가하면 자동으로 메모리 공간이 늘어난다는 특징이 있다. 배열의 특징을 가지고 있기 때문에 당연히 순서가 있는 Collection이다. 이 말은 곧 인덱스를 이용해서 데이터를 추출할 수 있다는 의미이다. 그리고 데이터를 중복해서 포함할 수도 있다.

Vector와 ArrayList는 기능면에서 거의 동일한 클래스로 보아도 무방하다. 이 둘의 차이점은 동기화 부분에서 나타난다. Vector의 경우 동기화를 자동으로 보장해주지만 ArrayList의 경우에는 동기화를 자동으로 보장하지 않는다.

그래서 네트워크 프로그램과 같은 Thread를 통한 객체 공유시 안정적인 데이터 접근을 가능케 하는 목적으로 Vector가 주로 사용되며 데이터의 빠른 처리를 요구할 경우에는 ArrayList를 주로 사용한다.


저작자 표시 비영리 변경 금지

'개발 > JAVA' 카테고리의 다른 글

가장 얇은 지갑 만들기  (0) 2011/10/07
Palindrome  (0) 2011/10/07
JAVA 메모리 영역 구조  (0) 2011/09/01
Vector와 ArrayList의 비교  (0) 2011/09/01
트랙백0 댓글0