TIL#19-1

DuBu·2023년 7월 4일
0

일본IT JAVA 연수과정

목록 보기
33/61
post-thumbnail

다음을 프로그래밍 하시오.

Scanner 클래스로 -1이 입력될 때까지 양의 정수를 입력 받아 저장하고 검색하여 가장 큰 수를 출력하는 프로그램을 작성하라.

정수(-1이 입력될 때까지)>> 10 6 22 6 88 77 -1
가장 큰 수는 88
 List<Integer> numList = new ArrayList<>();
	 Scanner sc;
	 
	 System.out.println("정수(-1이 입력될 때까지)>>");
	 sc = new Scanner(System.in);
	 
	 int num = 0;
	 int maxNum = 0;
	 while(num != -1) {
		 num = sc.nextInt();
		 
		 if(num > maxNum) {
			 maxNum = num;
		 }
	 }
	 
	 System.out.println("가장 큰 수는 " + maxNum);

Map

자바에서의 맵(Map)은 키-값 쌍의 데이터를 저장하는 자료구조입니다. 맵은 중복된 키를 허용하지 않으며, 각 키는 유일해야 합니다. 맵은 주로 데이터를 검색하고, 특정 키에 대응하는 값을 찾는 데 사용됩니다.

자바에서는 java.util 패키지에 있는 Map 인터페이스를 사용하여 맵을 구현할 수 있습니다. Map 인터페이스는 다양한 맵 구현체를 제공하며, 그중 가장 일반적인 것은 HashMap입니다. HashMap은 해시 테이블을 사용하여 키-값 쌍을 저장하므로 데이터를 빠르게 검색할 수 있습니다.

맵은 다음과 같은 주요 메서드를 제공합니다:

  • put(key, value): 주어진 키와 값을 맵에 추가합니다.
  • get(key): 주어진 키에 해당하는 값을 반환합니다.
  • remove(key): 주어진 키에 해당하는 키-값 쌍을 맵에서 제거합니다.
  • containsKey(key): 주어진 키가 맵에 있는지 여부를 확인합니다.
  • size(): 맵에 저장된 키-값 쌍의 개수를 반환합니다.
import java.util.HashMap;
import java.util.Map;

public class MapClass {

	public static void main(String[] args) {
		Map<Integer, String> map = new HashMap<>();

		// Key-value 기반 데이터 저장
		map.put(45, "Brown");
		map.put(37, "James");
		map.put(23, "Martin");

		System.out.println("No.23 " + map.get(23));
		System.out.println("No.23 " + map.get(37));

		System.out.println();

		map.remove(37);

		System.out.println("No.37 " + map.get(37));

	}
}

아래의 TreeMap의 Value를 확인 하기 위한 소스를 짜시오.

  • 순차적으로 나오도록 돌리시오
TreeMap<Integer, String> map = new TreeMap<>();
map.put(45, "Brown");
map.put(37, "James");
map.put(23, "Martin");
import java.util.Map;
import java.util.TreeMap;

public class TreeMapExample {
    public static void main(String[] args) {
        TreeMap<Integer, String> map = new TreeMap<>();
        map.put(45, "Brown");
        map.put(37, "James");
        map.put(23, "Martin");

        for (Map.Entry<Integer, String> entry : map.entrySet()) {
            System.out.println(entry.getKey() + " " + entry.getValue());
        }
    }
}

Treemap 과 Hashmap 의 차이는?

  • 정렬: TreeMap은 키(Key)를 기준으로 정렬된 순서로 데이터를 저장합니다. 이는 키의 자연적인 순서 또는 Comparator를 사용하여 정의된 순서에 따라 정렬됩니다. 반면에 HashMap은 순서를 보장하지 않고, 데이터를 임의의 순서로 저장합니다.
  • 성능: HashMap해시 테이블을 사용하여 데이터를 저장하므로 데이터의 삽입, 검색, 삭제에 대해 상수 시간(O(1)) 복잡도를 가집니다. TreeMap이진 검색 트리를 사용하여 데이터를 저장하므로 데이터의 삽입, 검색, 삭제에 대해 평균적으로 로그 시간(O(log n)) 복잡도를 가집니다. TreeMap은 키의 정렬된 순서를 유지해야 하기 때문에 삽입, 검색, 삭제 시에 조금 더 많은 시간이 소요될 수 있습니다.
  • 중복된 키: HashMap은 중복된 키를 허용하지 않습니다. 만약 동일한 키로 여러 개의 값을 저장하려고 하면, 최신 값으로 덮어씌워집니다. TreeMap도 중복된 키를 허용하지 않지만, 정렬된 순서를 유지해야 하기 때문에 키의 비교에 따라 값이 갱신됩니다.

어떤 맵을 사용할지는 사용하는 목적과 성능 요구 사항에 따라 달라집니다. 데이터를 정렬된 순서로 유지하고자 하거나, 특정 키에 대한 범위 검색이 필요하다면 TreeMap을 사용하는 것이 좋습니다. 반면에 순서가 중요하지 않고, 성능이 중요한 경우에는 HashMap을 선택하는 것이 더 효율적일 수 있습니다.

Deque 로 Stack 을 구현하시오.

import java.util.Deque;
import java.util.LinkedList;

public class StackExample {
    public static void main(String[] args) {
        Deque<Integer> stack = new LinkedList<>();

        // 스택에 요소 추가
        stack.push(10);
        stack.push(20);
        stack.push(30);

        // 스택의 맨 위 요소 확인
        int topElement = stack.peek();
        System.out.println("맨 위 요소: " + topElement);

        // 스택에서 요소 제거
        int removedElement = stack.pop();
        System.out.println("제거된 요소: " + removedElement);

        // 스택이 비어 있는지 확인
        boolean isEmpty = stack.isEmpty();
        System.out.println("스택이 비어 있는가? " + isEmpty);
    }
}

Deque 인터페이스는 양방향 큐(Double Ended Queue)를 나타내며, 스택과 큐의 모든 기능을 제공합니다.

스택의 특성을 구현하기 위해 Deque의 push() 메서드를 사용하여 요소를 스택에 추가하고, pop() 메서드를 사용하여 맨 위 요소를 제거합니다. 또한 peek() 메서드를 사용하여 스택의 맨 위 요소를 확인할 수 있습니다. 스택이 비어 있는지 여부를 확인하기 위해 isEmpty() 메서드를 사용합니다.

Deque를 사용하여 Stack을 구현하면 LIFO(Last-In-First-Out) 순서로 요소를 관리할 수 있습니다.

0개의 댓글