티스토리 뷰

 

 

[Java/boj(백준)]

1453. 피시방 알바

 

www.acmicpc.net/problem/1453

 

1453번: 피시방 알바

첫째 줄에 손님의 수 N이 주어진다. N은 100보다 작거나 같다. 둘째 줄에 손님이 들어오는 순서대로 각 손님이 앉고 싶어하는 자리가 입력으로 주어진다.

www.acmicpc.net

 


 

입력

손님의 수 N. N은 100보다 작거나 같다.

둘째 줄에 손님이 들어오는 순서대로 각 손님이 앉고 싶어하는 자리가 주어짐.

 

출력

거절당하는 사람의 수

 

풀이
package boj;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.StringTokenizer;

public class Main {

    public static void main(String[] args) throws IOException {

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        // 손님의 수 N
        int N = Integer.parseInt(br.readLine());

        // 현재 피시방의 착석 상황을 저장하는 HashMap
        HashMap<Integer, Boolean> customer = new HashMap<Integer, Boolean>();

        // 거절당한 손님의 수를 저장하는 변수
        int reject = 0;

        StringTokenizer st = new StringTokenizer(br.readLine());

        while(st.hasMoreElements()) {
            int num = Integer.parseInt(st.nextToken());

            if(customer.getOrDefault(num, false)) {
                // 만약 값이 true일 경우 이미 자리가 채워져 있는 것이므로 거절
                reject++;
            } else{
                // 착석 가능. HashMap value를 true로 변경
                customer.put(num, true);
            }
        }


        System.out.println(reject);
    }
}

 

 

리뷰

비교적 쉽게 해결할 수 있었던 문제!!

해결 후에 다른 분들 풀이하신 것도 확인해 봤는데 내 풀이가 메모리나, 속도면에서 크게 차이나는 풀이는 아닌 것 같았다.

배열의 길이를 100으로 정의하고 해결하신 분들도 있던데 (N이 100보다는 무조건 작거나 같기 때문에)

그것보다는 hashMap을 사용해 N의 길이만큼의 데이터를 저장하는게 더 낫다고 생각했던 것 같다.

사실 어떤 문제든 Collection을 사용해서 문제를 풀고 싶어하는 느낌이 없지 않은 것 같다...ㅎㅎ

 

 

채점 결과

댓글
«   2024/09   »
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
Total
Today
Yesterday
공지사항
최근에 올라온 글