SW공부 38일차

Guryena·2023년 2월 22일
0

CS

목록 보기
31/34

1.프로그래밍 하시오.

나라 이름과 인구를 입력하세요.(예: Korea 5000)
나라 이름, 인구 >> Korea 5000
나라 이름, 인구 >> USA 1000000
나라 이름, 인구 >> Swiss 2000
나라 이름, 인구 >> France 3000
나라 이름, 인구 >> 그만

인구 검색 >> France
France의 인구는 3000
인구 검색 >> 스위스
스위스 나라는 없습니다.
인구 검색 >> 그만

package _Map;

import java.util.HashMap;
import java.util.Scanner;
import java.util.Set;

public class Test {

	public static void main(String[] args) {
//나라 이름과 인구를 입력하세요.(예: Korea 5000)
//나라 이름, 인구 >> Korea 5000
//나라 이름, 인구 >> USA 1000000
//나라 이름, 인구 >> Swiss 2000
//나라 이름, 인구 >> France 3000
//나라 이름, 인구 >> 그만
//    
//인구 검색 >> France
//France의 인구는 3000
//인구 검색 >> 스위스
//스위스 나라는 없습니다.
//인구 검색 >> 그만
		Scanner sc = new Scanner(System.in);
		HashMap<String, Integer> popSearch = new HashMap<>();
		System.out.println("나라 이름과 인구를 입력하세요.");
		while (true) {
			String country = sc.next();
			if (country.equals("stop")) {
				break;
			} else {
				try {
					int population = sc.nextInt();
					popSearch.put(country, population);
					System.out.println("Country, Population >> " + country + " " + population);
				} catch (Exception e) {
					// TODO: handle exception
					sc.nextLine();
					System.out.println("It's not number");
				}
			}

		}

		Set<String> ks = popSearch.keySet();
		while (true) {
			String search = sc.next();

			try {
				if (search.equals("stop")) {
					System.exit(0);
				} else {

					System.out.println("Search >> " + search);
					System.out.println("Population >> " + popSearch.get(search).toString());
				}

			} catch (Exception e) {
				// TODO: handle exception
				System.out.println("There is no" + search + " country");
			}
		}
	}

}

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

도시 이름, 위도, 경도 정보를 가진 Location 클래스를 작성하고, 도시 이름을 '키'로 하는 HashMap<String, Location> 컬렉션을 만들고, 사용자로부터 입력 받아 4개의 도시를 저장하라. 그리고 도시 이름으로 검색하는 프로그램을 작성하라.

도시, 경도, 위도를 입력하세요.

서울, 37, 126
LA, 34, -118
파리, 2, 48

시드니, 151, -33

서울 37 126
LA 34 -118
파리 2 48

시드니 151 -33

도시 이름 >> 피리
피리는 없습니다.
도시 이름 >> 파리
파리 2 48
도시 이름 >> 그만

import java.util.HashMap;
import java.util.Scanner;
import java.util.Set;

public class Test1 {

public static void main(String[] args) {
	Scanner sc = new Scanner(System.in);
	HashMap<String, Location> map = new HashMap<>();

	while (true) {
		String city = sc.next();
		if (city.equals("stop")) {
			break;
		} else {
			try {

				double lati = sc.nextDouble();
				double longi = sc.nextDouble();
				Location location = new Location(lati, longi);
				map.put(city, location);
				System.out.println("Input >> " + city + " " + lati + " " + longi);
			} catch (Exception e) {
				sc.nextLine();
				System.out.println("Wrong input");
			}
		}

	}

	Set<String> ks = map.keySet();

	while (true) {
		System.out.print("City >> ");

		String search = sc.next();
		try {

			if (search.equals("stop")) {
				System.exit(0);
				;
			} else {
				System.out.println(search);
				System.out.println(search + " " + map.get(search).toString());
			}
		} catch (Exception e) {
			System.out.println("No " + search);
		}
	}
}

}

package Test;

public class Location {
private double latitude;
private double longitude;
public Location(double lati, double longi) {
this.latitude = lati;
this.longitude = longi;
}
@Override
public String toString() {
// TODO Auto-generated method stub
return latitude + " " +longitude;
}

}

### 3.큐와 스택에 대하여 설명하시오.(필수)
> 스택(stack)
이란 쌓아 올린다는 것을 의미한다. 
따라서 스택 자료구조라는 것은 책을 쌓는 것처럼 차곡차곡 쌓아 올린 형태의 자료구조를 말한다.
- 스택의 특징
스택은 위의 사진처럼 같은 구조와 크기의 자료를 정해진 방향으로만 쌓을수 있고,
top으로 정한 곳을 통해서만 접근할 수 있다.
top에는 가장 위에 있는 자료는 가장 최근에 들어온 자료를 가리키고 있으며,
삽입되는 새 자료는 top이 가리키는 자료의 위에 쌓이게 된다.
스택에서 자료를 삭제할 때도 top을 통해서만 가능하다.
스택에서 top을 통해 삽입하는 연산을 'push' , top을 통한 삭제하는 연산을 'pop'이라고 한다.
<b/>
따라서 스택은 시간 순서에 따라 자료가 쌓여서 가장 마지막에 삽입된 자료가 가장 먼저 삭제된다는 구조적 특징을 가지게 된다.
<b/>
이러한 스택의 구조를 후입선출(LIFO, Last-In-First-Out) 구조이라고 한다.
그리고 비어있는 스택에서 원소를 추출하려고 할 때 stack underflow라고 하며,
스택이 넘치는 경우 stack overflow라고 한다.
<b/>
- 스택의 활용 예시
스택의 특징인  후입선출(LIFO)을 활용하여 여러 분야에서 활용 가능하다.
웹 브라우저 방문기록 (뒤로 가기) : 가장 나중에 열린 페이지부터 다시 보여준다.
역순 문자열 만들기 : 가장 나중에 입력된 문자부터 출력한다.
실행 취소 (undo) : 가장 나중에 실행된 것부터 실행을 취소한다.
후위 표기법 계산
수식의 괄호 검사 (연산자 우선순위 표현을 위한 괄호 검사)


>


### 4. Map 에 대하여 설명하시오.


### 5. 아래의 TreeMap의 Value를 확인 하기 위한 소스를 짜시오.(필수)

TreeMap<Integer, String> map = new TreeMap<>();
map.put(45, "Brown");
map.put(37, "James");
map.put(23, "Martin");

import java.util.Iterator;
import java.util.Set;
import java.util.TreeMap;

public class _TreeMap {

public static void main(String[] args) {
	// TODO Auto-generated method stub
	TreeMap<Integer, String> map = new TreeMap<>();
	
	//Save data that type Key-Value
	map.put(45, "Brown");
	map.put(37, "James");
	map.put(23, "Martin");
	
	//Detected data
	System.out.println("23번 : " + map.get(23));
	System.out.println("37번 : " + map.get(37));
	System.out.println("45번 : " + map.get(45));
	System.out.println();
	
	//Create Collection Instance on only Key
	Set<Integer> ks = map.keySet();
	
	//Output all Key(for-each)
	for (Integer n : ks) {
		System.out.print(n.toString()+"\t");
	}
	System.out.println();
	
	//Output all Value(for-each)
	for (Integer n : ks) {
		System.out.print(map.get(n).toString()+"\t");
	}
	System.out.println();
	
	//Output all Value(Iterator)
	for (Iterator<Integer> itr = ks.iterator(); itr.hasNext();) {
		System.out.print(map.get(itr.next())+"\t");
		
	}
	System.out.println();
	
	
	//Remove data
	map.remove(37);

	//Check remove data
	System.out.println("37번 : " + map.get(37));
}

}

0개의 댓글