[알고리즘] 백준 10871번 : X보다 작은 수 (Kotlin)

    알고리즘의 공부가 필요하겠다 싶어서 공부를 시작하게 됐는데 문제를 이해하는게 어렵네요ㅋㅋ

    문제를 이해하면 로직은간단한거같은데 문제를 이해하는게 관건일듯 싶습니다

     

    www.acmicpc.net/problem/10871

     

    10871번: X보다 작은 수

    첫째 줄에 N과 X가 주어진다. (1 ≤ N, X ≤ 10,000) 둘째 줄에 수열 A를 이루는 정수 N개가 주어진다. 주어지는 정수는 모두 1보다 크거나 같고, 10,000보다 작거나 같은 정수이다.

    www.acmicpc.net

     

    1. Scanner와 IntArray를 이용한 방식

      
      import java.util.*
    
      fun main(args: Array<String>) = with(Scanner(System.`in`)) {
    
          val n = nextInt()
          val x = nextInt()
    
          val array = IntArray(n)
    
          for (i in 0 until n) {
              array[i] = nextInt()
          }
    
          for (i in 0 until n) {
              if (array[i] < x) {
                  print("${array[i]} ")
              }
          }
      }
      
    

     

     

    2. BufferedReader를 이용한 방식

      
      fun main(args: Array<String>) {
    
          val br = BufferedReader(InputStreamReader(System.`in`))
          var st = StringTokenizer(br.readLine(), " ")
    
          val n = st.nextToken().toInt()
          val x = st.nextToken().toInt()
    
          val sb = StringBuilder()
          st = StringTokenizer(br.readLine(), " ")
    
          for (i in 0 until n) {
              val value = st.nextToken().toInt()
              if (value < x) sb.append(value).append(' ')
          }
    
         print(sb)
      }
      

     

    1번의 코드가 간단하지만 

    2번의 코드가 메모리면에서 2배, 속도면에서 4배가 더 빠른 차이를 보였습니다 (ms의 차이라 체감은 안나지만..)

     

    처음 공부해보는거라 생소하네요 꾸준히 해야할듯 싶습니다

    더 나은 방법이 있다면 댓글 남겨주시면 감사하겠습니다!

     

    댓글