코딩 (독학)/★ Algorithm

[백준] 2741번 : N찍기 - Kotlin [코틀린]

짱득이 2022. 4. 19. 12:19
300x250
반응형


  • 문제 (2741번 : N 찍기 - Kotlin[코틀린])
 

2741번: N 찍기

자연수 N이 주어졌을 때, 1부터 N까지 한 줄에 하나씩 출력하는 프로그램을 작성하시오.

www.acmicpc.net

 


  • 알고리즘

자연수 N을 입력받고, for 반복문을 이용하여 1부터 N까지 반복 출력한다. 단, 출력 한번당 한번의 개행이 있어야한다.

 


  • 풀이

- 1번 풀이 (java.util.Scanner를 이용한 풀이)

import java.util.*

fun main() : Unit = with(Scanner(System.`in`)) {
    val N = nextInt()
    
    for(i in 1..N) println("${i}")
}

대부분 단순히 위와 같은 풀이로 접근했을 것 같다.

 

Scanner를 import 해준 뒤, N을 nextInt()로 입력받고,

for 문을 이용하여 1부터 N까지 단순히 출력해 준 코드이다.

 

코드는 간단하고 접근도 편리하지만, 백준에서의 의도한건지 N의 크기가 0 < N < 100,000 이다 보니 크기가 커질수록 메모리의 부담이 커질 것 같다.

 

 

- 2번 풀이 (BufferedReader를 이용한 풀이)

import java.util.StringTokenizer
import java.io.InputStreamReader
import java.io.OutputStreamWriter
import java.io.BufferedReader
import java.io.BufferedWriter

fun main() : Unit {
    val br = BufferedReader(InputStreamReader(System.`in`))
    val bw = BufferedWriter(OutputStreamWriter(System.out))
    
    for(i in 1..br.readLine().toInt()) bw.write("${i} \n")
    
    bw.flush()
    bw.close()
}

1번의 풀이가 메모리의 부담이 있을 것 같아서 BufferedReader와 BufferedWriter를 활용하여 메모리 부담을 최대한 줄여 보았다. 단순한 출력이기 때문에 풀이는 비슷한것을 볼 수 있다. 단지 사용방법만 다를 뿐이다.


  • 결과

확실히 메모리 크기가 차이나는 만큼, 풀이 시간이 확연히 차이가 난다. 1540ms와 224ms라니.. 이건 큰 발전이다.

 

게다가 두 코드 모두 한번에 성공한게 너무 뿌듯하다.. 나날이 발전하는게 보이는구만!!

 

 

 

 

 

 

#Kotlin #Android #Develop #코틀린 #안드로이드 #개발 #AppDevelop #앱개발

#baekjoon #github #백준 #깃헙 #깃허브 #프로그래밍 #앱개발자 #개발자 #취준 #취준생

#알고리즘 #Algorithm #문제풀이

728x90
반응형