Notice
Recent Posts
Recent Comments
Link
«   2026/10   »
일 월 화 수 목 금 토
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Tags more
Archives
Today
Total
관리 메뉴

seaking110 님의 블로그

사전 캠프 5일차 본문

Today I Learned

사전 캠프 5일차

seaking110 2024. 11. 25. 18:55

 

오늘은 자바 응용하기 문제 4개를 풀고 코딩 테스트용 알고리즘을 정리하려고 한다!

Lv.1 랜덤 닉네임 생성기

 

String s1[] = {"기절초풍","멋있는","재미있는"};
String s2[] = {"도전적인","노란색의","바보같은"};
String s3[] = {"돌고래","개발자","오랑우탄"};
Random r = new Random();
System.out.println(s1[r.nextInt(3)]+" "+s2[r.nextInt(3)]+" "+s3[r.nextInt(3)]);

 

대학교 1학년 때 풀었을거 같은 느낌의 문제로 랜덤은 정말 오랜만에 써보는거 같아서 대학교 1학년 때로 돌아간 느낌이 들었다.

r.nextInt(n) 으로 0~n 까지의 값을 랜덤으로 출력해준다.

 

 

Lv.2 스파르타 자판기

문제가 맵 관련 문제인 만큼 이왕 하는 김에 map 메소드에 대해 정리해보려고 한다!

 

Map 메소드 정리

 

1. put(K key, V value)

키와 값을 맵에 저장, 만약 키가 존재한다면 새로운 값으로 대체

Map<String, Integer> m = new HashMap<>();
m.put("apple", 50);
m.put("banana", 30);
m.put("banana", 20);
// apple : 50, banana : 20

 

2. get(Object key)

키 값에 따른 값을 반환, 만약 키가 없다면 null을 반환

int a = m.get("banana"); //20

 

3. remove(Object key)

키와 해당하는 값을 제거

m.remove("apple");

 

4. containsKey(key)

맵에 key가 포함되어 있는지 여부를 반환

boolean apple = m.containsKey("apple"); // false

 

5. containsValue(value)

맵에 value가 포함되어 있는지 여부를 반환

boolean price20 = m.containsValue(20); //true

 

6. keySet()

맵에 담긴 모든 키를 반환

Set<Integer> keySet = m.keySet();        
for (Integer key : keySet) {            
	System.out.println(key + " : " + m.get(key));        
}

 

7. value()

맵에 담긴 Collection을 반환

Collection<String> value = m.values();        
  System.out.println(value);  // [Apple, Banana]

 

8. entrySet()

맵의 모든 키-값을 꺼내야 할 때

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

 

9. size()

맵에 저장된 키-값 쌍의 개수를 반환

int size = m.size();

 

10. getOrdefault(key, defaultValue)

키에 대응하는 값을 반환하고 키가 존재하지 않는다면 defaultValue 값을 반환

int price = m.getOrDefault("orange", 0); // 오렌지가 없으면 0 있으면 orage에 해당하는 값 반환

 

11. replace(key, value)

m.replace("apple",70);

 

 

정답

		BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));	
		HashMap <String, Integer> hm = new HashMap<>();
		hm.put("사이다", 1700);
		hm.put("콜라", 1900);
		hm.put("식혜", 2500);
		hm.put("솔의눈", 3000);
		// map 출력 방식 1
		Set<String> iter = hm.keySet();
		for(String key : iter) {
			System.out.println(key+ ":" + hm.get(key));
		}
		// map 출력 방식 2
		for(Entry<String, Integer> entry : hm.entrySet()) {
			System.out.println(entry.getKey()+":"+ entry.getValue());
		}
		String s = bf.readLine();
		if(!hm.containsKey(s)) {
			return;
		}
		else {
			int money = Integer.parseInt(bf.readLine());
			if(money < hm.get(s)) {
				System.out.println("돈이 부족합니다.");
			}
			else{
				System.out.println("잔액 : " + (money-hm.get(s)) + "원");
			}
		}

 

map 메소드 중에 유용한 부분을 잘 배운 거 같고 특히 getOrdefault(key, defaultValue) 이 메소드는 유용하게 쓰일 거 같다!

 

Lv.3 단어 맞추기 게임

 

이 문제 역시 대학교 때 해봤었던 문제 같다! 조금 더 깔끔하게 문제를 풀 수 있었을거 같은데 나중에 정리해봐야 할거 같다!

public class Main {
	public static StringBuilder sb = new StringBuilder();
	public static void main(String[] args) throws IOException {
		BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));	
		String [] s = { "eye", "book", "phone", "orange", "picture", "apple", "banana", "piche", "melon", "watermelon"};
		Random r = new Random();
		int a = r.nextInt(10);
		boolean visited[] = new boolean[26];
		String as = s[a];
		char answer[] = new char[as.length()];
		for(int i=0;i<as.length();i++) {
			answer[i] = '_';
			System.out.print(answer[i]+" ");
		}
		int count = 9;
		int aCount = 0;
		while(true) {
			char c = bf.readLine().charAt(0);
			boolean flag = false;
			if(c>='a' && c<='z' && !visited[c-97]) {
				visited[c-97] = true;
				for(int i=0;i<as.length();i++) {
					if(c==as.charAt(i)) {
						answer[i] = c;
						flag = true;
						aCount++;
					}
				}
				if(flag) {
					for(int i=0;i<answer.length;i++) {
						System.out.print(answer[i]+" ");
					}
				}
				else {
					System.out.println("없습니다");
					count--;
				}
			}
			if(count==0) {
				System.out.println("game over");
				break;
			}
			if(aCount==as.length()) {
				System.out.println("정답!");
                break;
			}
		}
	}
}

 

 

보너스 문제 : 가위 바위 보!

역시 귀여운 가위바위보 문제!

public class Main {
	public static StringBuilder sb = new StringBuilder();
	public static void main(String[] args) throws IOException {
		BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));	
		String rcp[] = {"가위", "바위", "보"};
		String prize[] = {"꽝", "곰돌이 인형", "모자","가방","에어팟","핸드폰"};
		int winCount = 0;
		for(int i=0;i<5;i++) {
			System.out.println("가위 바위 보 중 하나를 입력해주세요!");
			Random r = new Random();
			String com = rcp[r.nextInt(3)];
			String user = bf.readLine();
			switch(user){
				case "가위" : 
					if(com.equals("보")) {
						winCount++;
						System.out.println("승리!");
					}
					else if(com.equals(user)) {
						System.out.println("무승부!");
					}
					else {
						System.out.println("패배!");
					}
					break;
				case "바위" : 
					if(com.equals("가위")) {
						winCount++;
						System.out.println("승리!");
					}
					else if(com.equals(user)) {
						System.out.println("무승부!");
					}
					else {
						System.out.println("패배!");
					}
					break;	
				case "보" : 
					if(com.equals("바위")) {
						System.out.println("승리!");
						winCount++;
					}
					else if(com.equals(user)) {
						System.out.println("무승부!");
					}
					else {
						System.out.println("패배!");
					}
					break;
				default : 
					System.out.println("잘못된 입력입니다!");
					i--;
			}		
		}
		System.out.println("축하합니다! 총 "+winCount+" 회 승리하여 경품으로 ["+prize[winCount]+"] 을 획득하셨습니다!");
	}
}

 

 

자바는 확실히 계속 코딩테스트를 공부하고 있어서 그런지 상당히 쉬웠다. 내일 부터는 코테용 알고리즘을 정리해보자!

'Today I Learned' 카테고리의 다른 글

사전 캠프 7일차  (0) 2024.11.27
사전 캠프 6일차  (1) 2024.11.26
사전 캠프 4일차  (0) 2024.11.22
사전 캠프 3일차  (0) 2024.11.21
2일차  (1) 2024.11.20