[알고리즘] 백준 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의 차이라 체감은 안나지만..)

 

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

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

 

댓글