[BOJ_2246 | IF]콘도 선정

2019. 1. 26. 15:35Computer Science/Problem Solving (PS)

save image



풀이




문제 자체는 If Else 조건문만 잘 활용하면 되는 간단한 알고리즘의 문제였으나

문제의 주어진 조건을 한번에 정확히 이해하기에는 조금은 실수의 여지가 있지 않나 싶었던 문제였다.


X보다 가깝다 && X보다 숙박비가 더 비싸다 -> 후보의 가능성 만족

X보다 멀다 -> 숙박비에 상관없이 후보의 가능성이 있다.


X보다 싸다 && X보다 거리가 멀다 -> 후보의 가능성 만족

X보다 비싸다 -> 거리에 상관없이 후보의 가능성이 있다.


즉, 후보의 가능성이 없는 숙소들은

X보다 가까우면서 숙박비가 싼 경우, 

X보다 싸면서 거리가 가까운 경우 이 2가지 밖에 없다.


이 부분을 제대로 이해하지 못해 꽤나 시간이 걸렸던 문제였던 것 같다.


숙소를 나타내는 클래스를 하나 생성하고 인스턴스들을 배열화하여 숙소의 리스트들을 저장하였다.

각각의 인스턴스들은 숙소의 바닷가로부터의 거리 distance와, 가격 price를 변수로 갖는다.





소스 코드


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
31
32
33
34
35
36
37
38
39
40
41
42
43
import java.util.*;
public class BOJ_2246 {
    public static void main(String[] args){
        Scanner input = new Scanner(System.in);
        int n = input.nextInt();
        condo[] condoArr = new condo[n];
        for(int i=0;i<n;i++){
            int dis = input.nextInt();
            int price = input.nextInt();
            condoArr[i] = new condo(dis, price);
        }
        int ans = 0;
        for(int i=0;i<n;i++){
            int cnt =0 ;
            for(int j=0;j<n;j++){
               if(condoArr[i].distance > condoArr[j].distance){
                   if(condoArr[i].price < condoArr[j].price) {cnt++;continue;}
                   else continue;
               }
 
               if(condoArr[i].price > condoArr[j].price){
                   if(condoArr[i].distance < condoArr[j].distance) {cnt++;continue;}
                   else continue;
               }
 
               cnt++;
 
            }
           // System.out.println(cnt);
            if(cnt==n)ans++;
        }System.out.println(ans);
 
    }
    static class condo{
        public int distance;
        public int price;
        condo(int distance, int price){
            this.distance = distance;
            this.price = price;
        }
    }
}
 
cs

반응형