본문 바로가기

알고리즘/백준 문제풀이

백준 2246 - 콘도 선정(Kotlin)

728x90

https://www.acmicpc.net/problem/2246

 

2246번: 콘도 선정

첫째 줄에 콘도의 개수를 나타내는 자연수 N(1 ≤ N ≤ 10,000)이 주어진다. 다음 N개의 줄에는 각 콘도에 대한 정보를 나타내는 두 정수 D(1 ≤ D ≤ 10,000), C(1 ≤ C ≤ 10,000)가 주어진다. D는 그 콘도의

www.acmicpc.net

문제 접근

입력값을 모두 비교해야되기때문에 배열로 저장

후보군이 될 수 없는 경우는 건너뛰어가며 가능한 경우의 수를 셈

 

정답 코드

import java.util.*


fun main(args: Array<String>): Unit = with(Scanner(System.`in`)) {
     val n = nextInt()

     //1. 더 가까운데 숙박비가 더 싼 경우
     //2. 더 먼데 숙박비가 더 비싼 경우
     val arr = Array(n){IntArray(2)} // 입력받은 모든 경우를 비교해야하므로 배열로 비교

     var ans = 0
     for(i in 0 until n){
          arr[i][0] = nextInt() // 거리
          arr[i][1] = nextInt() // 비용
     }
     for (i in 0 until n){
          var can = true //후보군인지 확인
          for (j in 0 until n){

               if (i == j) continue

               if(arr[i][0] >= arr[j][0]){
                    if (arr[i][1] >= arr[j][1]){
                         can = false
                         continue
                    }
               }

               if (arr[i][1] >= arr[j][1]){
                    if (arr[i][0]>= arr[j][0]){
                         can = false
                         continue
                    }
               }
          }
          if (can)ans++
     }
     print(ans)




}