CODING TEST/baekjoon

#30087 - 진흥원 세미나

iamyuunzo 2025. 7. 10. 21:05

📌 문제 정보

- 문제 이름 : #30087번 - 진흥원 세미나 

- 문제 링크 : https://www.acmicpc.net/problem/30087

 

 

📌 문제 요약

- 핵심 조건: 첫 번째 줄에 진흥이가 신청한 세미나의 수 N이 주어진다. 두 번째 줄부터 N개의 줄에 진흥이가 신청한 세미나의 목록이 주어진다. 어느 교실에서 열리는지 알아보자

- 제한: 세미나는 지문의 표에 있는 7개 중 하나로 주어지며, 중복되는 세미나는 없다.

 

 

📌 내 풀이 및 코드

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();

        for (int i = 0; i < N; i++) {
            String seminar = sc.next();

            if (seminar.equals("Algorithm")) {
                System.out.println("204");
            } else if (seminar.equals("DataAnalysis")) {
                System.out.println("207");
            } else if (seminar.equals("ArtificialIntelligence")) {
                System.out.println("302");
            } else if (seminar.equals("CyberSecurity")) {
                System.out.println("B101");
            } else if (seminar.equals("Network")) {
                System.out.println("303");
            } else if (seminar.equals("Startup")) {
                System.out.println("501");
            } else {
                System.out.println("105");
            }
        }
    }
}

 

<-- 내가 처음에 어떻게 풀었는지 -->

- 문제 푸는 흐름은 알고 있었으나 문법이 기억이 안났음. 문법 힌트 받고 다시 풀어서 맞춤. (equals)

- 문자열 비교는 ==을 쓰지 않음. .equals()!!!

 

 

📌 다른 풀이

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        // 1️⃣ Map 만들기: 세미나 이름 → 교실번호
        Map<String, String> seminarMap = new HashMap<>();
        seminarMap.put("Algorithm", "204");
        seminarMap.put("DataAnalysis", "207");
        seminarMap.put("ArtificialIntelligence", "302");
        seminarMap.put("CyberSecurity", "B101");
        seminarMap.put("Network", "303");
        seminarMap.put("Startup", "501");
        seminarMap.put("TestStrategy", "105");

        // 2️⃣ 세미나 수 입력
        int N = sc.nextInt();

        // 3️⃣ N번 반복
        for (int i = 0; i < N; i++) {
            String seminar = sc.next(); // 세미나 이름 하나 입력

            // 4️⃣ Map에서 교실 번호 찾기
            String room = seminarMap.get(seminar);

            System.out.println(room); // 출력
        }
    }
}

<-- 풀이 요약 -->

- Map : 세미나 이름 -> 교실번호 저장 / 입력받은 세미나 이름 -> 교실번호 찾기 / 여러 개 입력 -> for 안에서 next()

- 표 같은 자료는 Map으로 관리하면 깔끔함.

 

 

📌 새로 배운 문법

<-- 이번 문제에서 새로 배운 Java 문법 정리 -->

** Map 다시 정리 **

// 기본 선언 문법
import java.util.HashMap;
import java.util.Map;

Map<String, String> map = new HashMap<>();

// 값 넣기 (put)
map.put("Algorithm", "204");
map.put("Network", "303");

// 값 가져오기 (get)
String room = map.get("Algorithm"); // "204"


// for-each문으로 모든 Key-Value 돌기
for (String key : map.keySet()) {
	System.out.println(key+ "->" + map.get(key));
}

 

[자주 쓰는 메서드 총정리]

메서드  설명  예시
put(K key, V value) 값 저장 map.put("A", "1")
get(K key) 값 가져오기 map.get("A")
containsKey(K key) Key 존재 여부 map.containsKey("A")
remove(K key) Key-Value 삭제 map.remove("A")
size() 원소 개수 map.size()