EvergreenTree97 / Rokorithm

💪 1 부터 시작하는 알고리즘
0 stars 0 forks source link

2023/07/06 #42

Open EvergreenTree97 opened 1 year ago

EvergreenTree97 commented 1 year ago

1269 대칭 차집합 silver 4

EvergreenTree97 commented 1 year ago

보이는 대로 문제를 푸는 습관을 버려야 할 듯 하다.

기존 코드는 A-B와 B-A를 구해서 합쳤지만, 좀 더 생각했다면 A+B - 2ANDB의 공식을 활용해서 원소들을 이용한 연산을 한번 줄일 수 있었다.

fun main() {
    with(System.`in`.bufferedReader()) {
        val (N, M) = readLine().split(" ").map(String::toInt)
        val a = readLine().split(" ").map(String::toInt).toSet()
        val b = readLine().split(" ").map(String::toInt).toSet()
        print(a.size+b.size-(a.getIntersectionCount(b) * 2))
    }
}

fun <T> Set<T>.getIntersectionCount(other: Set<T>): Int{
    return count {
       other.contains(it)
    }
}

100MS를 개선시켰다. image

EvergreenTree97 commented 1 year ago

1181 단어 정렬 silver 4

EvergreenTree97 commented 1 year ago

이번에는 정렬 방법 중 Comparator를 구현하여 사용해 보았다. 사용해본 결과 정렬 방식을 다음과 같이 사용하는 것이 좋을 것 같다.

  1. 정렬이 간단한 경우(오름차순, 내림차순)

    • 기본 자료형의 경우 sort(), sortByDecending() 사용
    • 프로퍼티가 2개 이상인 클래스의 경우 sortBy{} 사용
  2. 기본 자료형에서 정렬 기준이 조금 복잡한 경우

    • object SortWord: Comparator<String> 으로 정렬 기준을 제공
  3. 프로퍼티가 2개 이상인 클래스에서 정렬 기준이 복잡한 경우

    • 클래스에 Comparable을 구현 받아서 내부에 compare을 override