[BOJ_2246 | IF]콘도 선정
2019. 1. 26. 15:35ㆍComputer Science/Problem Solving (PS)
풀이
문제 자체는 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 |
반응형
'Computer Science > Problem Solving (PS)' 카테고리의 다른 글
[BOJ_11053 | DP] 가장 긴 증가하는 부분 수열 (0) | 2019.02.01 |
---|---|
[BOJ_7576 | BFS]토마토 (0) | 2019.01.28 |
[BOJ_1753 | Dikjstra]최단경로 (0) | 2019.01.24 |
[BOJ_11562 | Floyd]백양로 브레이크 (0) | 2019.01.22 |
[BOJ_10159 | Floyd]저울 (0) | 2019.01.20 |