본문 바로가기
백준(Java)/23년 11월

[Java] 백준 - 1700번: 멀티탭 스케줄링

by C0MPAS 2023. 11. 15.

11월 15일(수) - 그리디 알고리즘 (1700번)

 

1700번: 멀티탭 스케줄링

기숙사에서 살고 있는 준규는 한 개의 멀티탭을 이용하고 있다. 준규는 키보드, 헤어드라이기, 핸드폰 충전기, 디지털 카메라 충전기 등 여러 개의 전기용품을 사용하면서 어쩔 수 없이 각종 전

www.acmicpc.net

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

 

문제점

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

 

풀이

(풀이출처 -> https://loosie.tistory.com/484 )

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

import java.util.*;

public class Main {

    public static void main(String[] args) throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());

        int N = Integer.parseInt(st.nextToken());
        int K = Integer.parseInt(st.nextToken());

        st = new StringTokenizer(br.readLine());
        int[] seq = new int[K+1];
        List<Integer> list = new ArrayList<>();
        for(int i=0; i<K; i++)
        {
            list.add(Integer.parseInt(st.nextToken()));
        }

        Set<Integer> set = new HashSet<>();

        int count = 0;
        for(int i=0; i<K; i++)
        {
            int num = list.get(i);
            if(set.contains(num))
            {
                continue;
            }
            if(set.size() < N && set.add(num))
            {
                continue;
            }

            int max = -1;
            int idx = -1;
            for(int s : set)
            {
                int tmp = 0;
                List<Integer> sub = list.subList(i+1, K);
                if(sub.contains(s))
                {
                    tmp = sub.indexOf(s) + 1;
                }
                else
                {
                    tmp = K-i-1;
                }

                if(tmp > max)
                {
                    max = tmp;
                    idx = s;
                }
            }

            set.remove(idx);
            set.add(num);
            count++;
        }

        System.out.println(count);
    }
}

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

댓글