import java.io.*
import java.util.*

fun main() {
    val br = BufferedReader(InputStreamReader(System.`in`))
    val bw = BufferedWriter(OutputStreamWriter(System.out))

    val arr = IntArray(1_001)
    var testCase = br.readLine().toInt()

    var sum: Double
    var eveRage: Double
    var sumCnt: Double
    var d: Double
    for ( i in 1..testCase) {
        sum = 0.0
        eveRage = 0.0
        sumCnt = 0.0
        d = 0.0
        val str2 = StringTokenizer(br.readLine())

        //입력값 배열 저장
        var i:Int = 0
        while (str2.hasMoreTokens()) {
            arr[i] = str2.nextToken().toInt()
            i++
        }

        //평균구하기
        for ( i in 1..arr[0]) {
            sum += arr[i]
            eveRage = sum / arr[0]
        }

        //학생 비율
        for ( i in 1..arr[0]) {
            if ( arr[i] > eveRage)
                sumCnt += 1
        }
        d = sumCnt / arr[0] * 100
        bw.write("%.3f".format(d)+"%\n")//소수점 3자리
        bw.flush()
    }
    bw.close()
}

단계6(배열) 마지막문제인 4344번입니다.

코드가 엄~청 길죠?? 분명 단축하는 방법은 있을텐데

아직 배우는 중이라서 공부를 더 하고 코드 다이어트 좀 해봐야겠어요

갈 수록 어려워지네요... 포기하지말아야지


추가-

 

import java.io.*
import java.util.*

fun main() {
    val br = BufferedReader(InputStreamReader(System.`in`))
    val bw = BufferedWriter(OutputStreamWriter(System.out))

    val arr = IntArray(1_001)
    var arr2: List<Int>
    var arr3: List<Int>
    var testCase = br.readLine().toInt()

    var aveRage = 0.0
    var sumCnt: Double
    var d: Double
    for ( i in 0 until testCase) {
        val str2 = StringTokenizer(br.readLine())

        //입력값 배열 저장
        var i:Int = 0
        while (str2.hasMoreTokens()) {
            arr[i] = str2.nextToken().toInt()
            i++
        }
        arr2 = arr.slice(listOf(0)) //맨 앞 요소만 가져오기
        arr3 = arr.take(arr2[0]+1).drop(1)//학생들 점수만 가져오기
        
        //평균구하기
        aveRage = arr3.average()
        
        //학생 비율
        sumCnt = arr3.count { it > aveRage}.toDouble()
        d = sumCnt / arr3.count() * 100
        bw.write("%.3f".format(d)+"%\n")//소수점 3자리
        bw.flush()
    }
    bw.close()
}

이번에는 가능한 반복문을 없애고 라이브러리 활용위주로 해보았는데

채점시간이 더 오래걸리네요

작은 데이터 색에는 반목문이 더 빠른 것 같아요. 아닌가?

반응형
import java.io.*
import java.util.*

fun main() {
    val br = BufferedReader(InputStreamReader(System.`in`))
    val bw = BufferedWriter(OutputStreamWriter(System.out))
    val str = br.readLine()
    val stx = StringTokenizer(str)

    var num = stx.nextToken().toInt()

    var a = 0
    var b = 0
    var temp =  0
    var cnt = 0
    var c= num

    while (true) {

        a = num / 10
        b = num % 10
        temp = (a + b) % 10
        num =  b * 10 + temp
        cnt++
        if(c == num ) break
    }
    bw.write("$cnt")
    bw.flush()
    bw.close()
}

단계4(while문) 마지막문제에요

어려웠어요... 한 몇시간 공책가지고 풀어도 안돼서 결국...

인터넷에 검색해버리고 말았어요. 하지만 이제는 알았어요 규칙을 ㅜ

이제는 제가 생각하고 있는 것만 생각하지말고 또 다른

규칙에 대해 좀더 깊게 생각해봐야겠어요

반응형
import java.io.*
import java.util.*

fun main() {
        val br = BufferedReader(InputStreamReader(System.`in`))
        val bw = BufferedWriter(OutputStreamWriter(System.out))
        var str = br.readLine() //콘솔창 한 줄을 받음(공백상관)
        var stk = StringTokenizer(str) //공백을 기준으로 숫자를 나눔
        val n = stk.nextToken().toInt() //수열의 갯수 몇개받을 것인지
        val m = stk.nextToken().toInt() // 판단기준 숫자

        //여기서 부터 수열의 숫자들을 받음
        str = br.readLine()
        stk = StringTokenizer(str)

        if (stk.hasMoreTokens()) {
            for(i in 1..n) {
                val num = stk.nextToken().toInt()
                if (num < m)
                    bw.write("$num ")
            }
        }
    bw.flush()
    bw.close()
}

백준 단계3(for문) 마지막 문제에요

문제를 보면 배열로 하면 간단하겠지만 출제자의 의도는

for과 if만을 사용하길 원했기에 한번 이렇게 해봤어요.

저는 scanner 만 사용했었는데 BufferedReader 라는 쪽을 알고된후에

입출력에 대해 아예 새롭게 배우고 있어요

아직도 완벽하게 습득하진 못했어요 계속 자주 써봐야겠어요

근데 시간면에서 1등이네요... 신기..

반응형
import java.util.*

fun main() {
    val scanner = Scanner(System.`in`)

    var a = scanner.nextInt()
    var b = scanner.nextInt()
    var c = scanner.nextInt()

    when {
        a > b && a > c && b > c -> print(b)//a가 가장 크고 b가 2번째 일때
        a > b && a > c && b < c -> print(c)//a가 가장 크고 c가 2번째 일때
        b > a && b > c && a > c -> print(a)//b가 가장 크고 a가 2번째 일때
        b > a && b > c && a < c -> print(c)//b가 가장 크고 c가 2번째 일때
        c > a && c > b && a > b -> print(a)//c가 가장 크고 a가 2번째 일때
        c > a && c > b && a < b -> print(b)//c가 가장 크고 b가 2번째 일때
        a == b -> print(a) //숫자 2개가 같다는건 남은 1개는 작거나 크다는 얘기
        b == c -> print(b)
        a == c -> print(c)
    }
}

단계 2(if문) 마지막문제에요

when이라는 조건문이 있어서 코드가 깔끔해요

배열을 사용하면 더 간단할텐데

조건문만 써야해서 머리를 많이 썼네요

답을 알아내면 엄청 쉬운데 그전에는 진짜 세상에 아무것도 없는 것을

만들어내는 느낌이랄까?? 엄청나요

반응형
import java.util.*

fun main() {
    val scanner = Scanner(System.`in`)

    val a = scanner.nextInt()
    val b = scanner.nextInt()

    println(a * (b % 10))
    println(a * (b % 100 / 10))
    println(a * (b / 100))
    print(a*b)
}

단계 1(입출력과 사칙연산) 마지막문제라서 올려보아요

앞으로도 각 단계 마지막문제를 '풀 수' 있다면

쉽든 어렵든 올려볼려고 해요

반응형
fun main () {

           println("강한친구 대한육군")

           print("강한친구 대한육군")

}

다들 이렇게 작성하셨나요?

그렇다면 정답이 맞아요. 하지만 틀리다고 하는 이유!

제출하실때 언어를 Kotlin(JVM)으로 하지 마시고

Kotlin(Native)로 돌려주시면 돼요

자바의 PrintStream이라는 부분을 쓰면 JVM으로 돌아간다고 하는데요

그냥 5초 입력하면 넘어가는 것을 못보던 방법쓰면서 풀려고하니깐

20분 넘어가도 못 풀고 있으니

Native로 돌려서 마무리할게요

반응형

안녕하세요.

제가 여행초기부터 계속 물갈이와 이때를 틈타서 파고드는 병균들 때문에

몸이 안 좋아서 이건 여행이 아니고 고통받는 거라서 생각했기 때문에

귀국하였어요 + 재미없어서

많은 준비를 했는데 안타깝네요

다음번엔 더 좋은 모습으로 여행을 가야겠어요

봐주셔서 감사해요

 

반응형

안녕하세요

오늘은 페티예에서 잉여로운 하루를 보내려고 해요

물론 정비기간이라고 하는게 맞지만요

페티예 첫날 숙소에요

떠나기 굉장히 아쉬웠던 숙소였어요

이유는... 어제 밤 8시쯤에 도착한 제가 ATM이 어디있는지 물어봤는데

너무 멀다고 차를 태워주셔서 절 데려다주시고

올때는 잠깐이지만 밤바다를 구경시켜 주셨어요

영어를 잘 못하시지만 이것저것 알려주시려는 모습이 굉장히 감사했어요

물론 제 나름대로 성의표현을 했어요

또한 인상이 굉장히 좋으신 할아버님이어서 더더욱 감사했어요

생존보고에요 ㅎ

웰컴 투 페티예~

여기 앞바다는 지중해에요

하지만 배경이 더 멋져요

지중해

숙소 체크인 시간전까지 페티예 구경 좀 하려고

높은 지대에 올라가는 도중에 이런곳이 보이더라구요

알고보니 관광지였어요

저거는 일부분이고 입장하는 곳이 따로 있고 입장료는 5리라였어요

그런데 어떻게 절벽에 저런 것을 만들었을까요?

정말 신기해요

이곳은 페러글라이딩이 유명하지만 

12만원이 넘네요...

터키는 이제 할만한 것은 다 한듯하고

다음 나라는 어디를 갈지 고민되네요

오늘 내일 차분히 생각해봐야겠어요

반응형

+ Recent posts