IT 면접 족보39

권단비·2023년 2월 22일
0

IT

목록 보기
82/139

1.프로그래밍 하시오.

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

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

▼정답

package CollectionF;

import java.util.*;

public class HashMapTest1 {
	public static void main(String[] args) {
		Map<String, Integer> con = new HashMap<>();
		String contry = null;
		int pop = 0;
		String input = null;
		Scanner sc = new Scanner(System.in);
		System.out.println("나라 이름과 인구를 입력하세요.(예: Korea 5000)");
		while (true) {
			System.out.print("나라 이름, 인구 >> ");

			contry = sc.next();
			if (contry.equals("그만")) {
				System.out.println();
				break;
			}
			try {
				pop = sc.nextInt();
			} catch (Exception e) {
				System.out.println("숫자가 아닙니다.");
				sc.nextLine();
				continue;
			}
			con.put(contry, pop);
		}
		while (true) {
			Set<String> ks = con.keySet();

			System.out.print("인구 검색 >> ");
			input = sc.next();
			if (input.equals("그만")) {
				System.out.println("종료합니다.");
				break;
			} else if (con.get(input) != null) {
				System.out.println(input + "의 인구는 " + con.get(input));
			} else
				System.out.println(input + "은(는) 없습니다.");
		}
	}
}

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
도시 이름 >> 그만

▼정답

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

import java.util.*;

class Location {
	int lat; // 경도
	int lng; // 위도

	public Location(int lat, int lng) {
		this.lat = lat;
		this.lng = lng;
	}

	public String toString() {
		return this.lat + " " + this.lng;
	}
}

public class HasMapTest2 {
	public static void main(String[] args) {
		Map<String, Location> list = new HashMap<>();
		StringTokenizer token;

		String name = null;
		String input = null;
		Scanner sc = new Scanner(System.in);
		System.out.println("도시, 경도, 위도를 입력하세요. (예: 서울 37 126)");
		while (list.size() < 4) {
			System.out.print(">> ");

			name = sc.nextLine();
			token = new StringTokenizer(name, " ,");
			if (name.equals("그만")) {
				System.out.println();
				break;
			}
			while (token.hasMoreTokens()) {
				name = token.nextToken();
				int lat = Integer.valueOf(token.nextToken());
				int lng = Integer.parseInt(token.nextToken());
				list.put(name, new Location(lat, lng));
			}
		}
		while (true) {
			Set<String> ks = list.keySet();

			System.out.print("도시 이름 >> ");
			input = sc.next();
			if (input.equals("그만")) {
				System.out.println("종료합니다.");
				break;
			} else if (list.get(input) != null) {
				System.out.println(input + " " + list.get(input));
			} else
				System.out.println(input + "은(는) 없습니다.");
		}
	}
}

3.큐와 스택에 대하여 설명하시오.(필수)

▼정답

[큐]
큐는 한쪽 끝에서 삽입 작업이, 다른 쪽 끝에서 삭제 작업이 양쪽으로 이루어진다.
선입선출(FIFO, First in first out) 방식의 자료구조.
한쪽 끝에서 삽입 작업이, 다른 쪽 끝에서 삭제 작업이 양쪽으로 이루어진다.

[스택]
스택(stack)이란 쌓아 올린다는 것을 의미한다. 
후입선출(LIFO, Last-In-First-Out) 방식의 자료구조.
같은 구조와 크기의 자료를 정해진 방향으로만 쌓을수 있고, top으로 정한 곳을 통해서만 접근한다.
가장 마지막에 삽입된 자료가 가장 먼저 삭제된다.

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

▼정답

1. 요소의 저장 순서를 유지하지 않는다.
2. key :  중복 허용 X 
   value :  중복 허용O
   
Map은 key를 통해 value를 얻는다.
키와 값을 하나의 쌍으로 저장하는 방식(key-value 방식)을 사용
HashMap과 TreeMap이 있다.

HashMap<K, V> 
입력된 순서나 Key 값의 정렬 순서는 지켜지지 않고 다 섞이게 된다. 다만 다른 Map에 비해 빠른 탐색시간을 갖는다. 해시 함수를 사용하기 때문에 O(1)의 시간 복잡도를 갖는다.

TreeMap<K, V>
Tree 자료구조의 특성상 반복자가 정렬된 순서대로 Key들에 접근한다.
데이터를 내부적으로 RB-Tree 형태로 관리하기 때문에 데이터를 탐색하는데 O(log N)의 시간이 걸린다

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

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

▼정답

package CollectionF;
import java.util.*;
public class TreeMapTest {
	public static void main(String[] args) {
		TreeMap<Integer, String> map = new TreeMap<>();
		map.put(45, "Brown");
		map.put(37, "James");
		map.put(23, "Martin");

		System.out.println("45번: " + map.get(45));
		System.out.println("37번: " + map.get(37));
		System.out.println("23번: " + map.get(23));
//=====================================================================
		Set<Integer> ks = map.keySet();
		for (Iterator<Integer> itr = ks.iterator(); itr.hasNext();)
			System.out.print(map.get(itr.next()) + '\n');
		System.out.print(map);
		System.out.println();
	}
}

[결과]
45번: Brown
37번: James
23번: Martin
Martin
James
Brown
{23=Martin, 37=James, 45=Brown}

0개의 댓글