본문 바로가기

ALGORITHM

백준 2831 댄스 파티 (Java)

1. 문제 링크

 

2831번: 댄스 파티

남자 N명과 여자 N명이 상근이가 주최한 댄스 파티에 왔다. 상근이는 모든 사람의 키를 알고있다. 각 남자는 모두 여자와 춤을 출 수 있고, 여자는 남자와 춤을 출 수 있다. 모든 사람은 많아야 한

www.acmicpc.net

 

2. 문제 및 입출력예제

 

3. 문제 풀이

1. 키가 작은 여자와 키가 큰 여자, 키가 작은 남자와 키가 큰 여자로 나누어서 저장한다.
2. 전부 정렬한다.
3. 여자와 남자 각각 인덱스 번호를 가지고, 조건이 성립하는 경우에만 커플의 수를 증가한다.
4. 그 외에는 조건에 맞을 때까지 키가 커야 하는 조건의 사람이 커질 때까지 인덱스 번호를 증가한다.

 

4. 코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;

public class Main {
	static int N, couple;
	static ArrayList<Integer> tMan, sMan, tWoman, sWoman;
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        
        //음수면 작은 사람이랑 추길 원하는
        //양수면 큰 사람이랑 추길 원하는
        int N = Integer.parseInt(br.readLine());
        tMan = new ArrayList<>();
        sMan = new ArrayList<>();
        tWoman = new ArrayList<>();
        sWoman = new ArrayList<>();
        String[] split1 = br.readLine().split(" ");
        String[] split2 = br.readLine().split(" ");
        
        for(int i=0;i<N;i++) {
        	int a = Integer.parseInt(split1[i]);
        	int b = Integer.parseInt(split2[i]);
        	
        	
        	if(a > 0) {
        		sMan.add(a);
        	}
        	else {
        		tMan.add(a*-1);
        	}
        	
        	if(b > 0) {
        		sWoman.add(b);
        	}
        	else {
        		tWoman.add(b*-1);
        	}
        }

        //정렬
        Collections.sort(tMan);
        Collections.sort(sMan);
        Collections.sort(sWoman);
        Collections.sort(tWoman);
        
        for(int i=0, j=0;i<tMan.size() && j<sWoman.size();) {
        	int man = tMan.get(i);
        	int woman = sWoman.get(j);
        	
        	if(man <= woman) {
        		i++;
        	}
        	else {
        		couple++;
        		i++;
        		j++;
        	}
        }
        
        for(int i=0, j=0;i<sMan.size() && j<tWoman.size();) {
        	int man = sMan.get(i);
        	int woman = tWoman.get(j);
        	
        	if(man >= woman) {
        		j++;
        	}
        	else {
        		couple++;
        		i++;
        		j++;
        	}
        }
        System.out.println(couple);
    }
}

 

'ALGORITHM' 카테고리의 다른 글

백준 1939 중량제한 (Java)  (0) 2023.09.16
백준 2056 작업 (Java)  (0) 2023.09.14
백준 15684 사다리 조작 (Java)  (0) 2023.09.11
백준 2623 음악프로그램 (Java)  (0) 2023.09.09
백준 14226 이모티콘 (Java)  (0) 2023.09.08