inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

자바 코딩테스트 - it 대기업 유제

4. "피부과" 코드 해설

회의실 만남(구현부분)과 현관문 출입순서(자료구조) 질문드립니다.

513

vkfksaosldk

작성한 질문수 27

0

회의실 만남은 구현으로 풀고 현관문 출입순서는 큐로 풀었는데, 회의실 만남은 큐로 못 푸나요??

다른 차이가 있을까요???

java 코딩-테스트

답변 2

1

나의서재

public int[] solution(int[] enter, int[] exit){
    int totalWorker = enter.length;
    int[] answer = new int[totalWorker];

    // 나갈사람들
    Deque<Integer> exitWorkers = new LinkedList<>();
    for (int exitWorker : exit) {
        exitWorkers.offer(exitWorker);
    }

    // 만난 사람들을 검증하는 배열
    boolean[][] hasMeet = new boolean[totalWorker + 1][totalWorker + 1];
    for (int self = 0; self <= totalWorker; self++) {
        // 자기 자신과는 만날 수 없다.
        hasMeet[self][self] = true;
    }

    // 회의실에 있는 사람들
    Set<Integer> workersInMeetingRoom = new HashSet<>();
    while (!exitWorkers.isEmpty()) {
        for (int enterWorker : enter) {
            workersInMeetingRoom.add(enterWorker);

            for (int workerInMeetingRoom : workersInMeetingRoom) {
                if (!hasMeet[workerInMeetingRoom][enterWorker]) {
                    answer[enterWorker - 1]++;
                    answer[workerInMeetingRoom - 1]++;
                    hasMeet[workerInMeetingRoom][enterWorker] = true;
                    hasMeet[enterWorker][workerInMeetingRoom] = true;
                }
            }

            while (workersInMeetingRoom.contains(exitWorkers.peek())) {
                int exitWorker = exitWorkers.poll();
                workersInMeetingRoom.remove(exitWorker);
            }
        }
    }

    return answer;
}


저는 Set과 Queue(Deque)을 이용해서 풀어봤습니다. 컴파일 시 출력은 일치하지만 좋은 코드인지는 잘 모르겠습니다!

0

김태원

안녕하세요^^

현관문 출입순서는 각 사람의 현관문 도착시간이 정확하게 입력으로 주어지는 반면에 회의실 만남은 각 사람의 입실시간과 퇴실시간이 정확이 주어지지 않습니다. 회의실 만남은 최대한 서로 만나지 않게 각 사람의 입실과 퇴실의 시간을 찾는게 관건인 문제입니다. 회의실 만남을 큐로 해결하는 것은 저는 해법이 떠오르지 않네요. 불가능할 것 같은데 혹시 회의실 만남을 큐로 도전해보시고 성공하시면 코드를 공유하면 좋겠습니다.

비밀번호

0

67

1

과일 가져가기 이러한 경우에는 반례가 생기지 않나요?

0

163

2

cpu 스케줄링

0

107

2

외부 문제 질문

0

122

2

가장 많이 사용된 회의실

0

118

2

심사위원 문제 시간복잡도 질문

0

127

1

현관문 출입순서

0

98

1

미로의 최단거리 통로

0

74

1

집으로 이동 문제 코드

0

125

1

채점 사이트 개설

0

161

2

송아지를 잡자

1

110

1

다익스트라 + 환승횟수

0

135

2

문제풀이 해설 질문입니다.

0

124

2

"이동 횟수" 문제가 변형된다면?

0

156

2

예제 3번의 정답이 이해가 되지 않아요 선생님 ㅜㅜ

0

249

1

"비밀번호" 문제 확인 부탁드립니다!

0

171

1

최대 길이 연속수열 질문

0

193

1

잃어버린 강아지 문제 count 관련 질문있습니다

0

204

1

바둑대회 질문입니당

0

222

1

5. "최대 길이 바이토닉 수열" 에서 설명해주신 방법과 제가 직접 구현한 방법이 달라, 확인 한번 부탁드립니다

0

311

1

알파코드 풀이질문입니다

0

218

1

7번 비밀 번호 문제에 시간복잡도가 궁금합니다!

0

164

1

혹시 이렇게 작성해도 괜찮나요?

0

287

2

문제풀이 확인 부탁드립니다.

0

245

1