알고리즘 공부/미분류

백준 8958 with Kotlin #forEach #배열선언

_우지 2021. 7. 4. 15:21

 OX퀴즈 성공출처다국어

한국어   

시간 제한메모리 제한제출정답맞은 사람정답 비율

1 초 128 MB 95353 47837 40571 51.094%

문제

"OOXXOXXOOO"와 같은 OX퀴즈의 결과가 있다. O는 문제를 맞은 것이고, X는 문제를 틀린 것이다. 문제를 맞은 경우 그 문제의 점수는 그 문제까지 연속된 O의 개수가 된다. 예를 들어, 10번 문제의 점수는 3이 된다.

"OOXXOXXOOO"의 점수는 1+2+0+0+1+0+0+1+2+3 = 10점이다.

OX퀴즈의 결과가 주어졌을 때, 점수를 구하는 프로그램을 작성하시오.

입력

첫째 줄에 테스트 케이스의 개수가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 길이가 0보다 크고 80보다 작은 문자열이 주어진다. 문자열은 O와 X만으로 이루어져 있다.

출력

각 테스트 케이스마다 점수를 출력한다.

예제 입력 1 복사

5 OOXXOXXOOO OOXXOOXXOO OXOXOXOXOXOXOX OOOOOOOOOO OOOOXOOOOXOOOOX

예제 출력 1 복사

10 9 7 55 30

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
fun main(){
    /*
    count를 해서 0이 몇번 나왔는지 체크.
     */
    val num = readLine()!!.toInt()
    var count =1
    var sum = 0
    var array = Array(num,{0})
    for(i in 0 until num){
        sum = 0
            val gogo = readLine().toString()
            for (j in gogo){
                if(j=='O'){
                    sum+= count
                    count++
                }
                else if (j == 'X'){
                    count = 1
                }
                //print("$sum ")
            }
        count = 1
        array[i]=sum
        //println()
    }
    for(i in 0 until array.size)
        println(array[i])
}
cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
fun main(){
    /*
    count를 해서 0이 몇번 나왔는지 체크.
     */
    val num = readLine()!!.toInt()
    var count =1
    var sum = 0
    var array = IntArray(num) { 0 }
 
    for(i in 0 until num){
        sum = 0
            readLine()!!.forEach {
                when(it){
                    'O'->{
                        sum+= count
                        count++
                    }
                    'X'->{
                        count = 1
                    }
                }
            }
        count = 1
        array[i]=sum
        //println()
    }
    for(i in 0 until array.size)
        println(array[i])
}
cs

이 문제에서는 다른분의 코드를 보면서 forEach를 배웠다.

// 출처 https://www.acmicpc.net/source/30454272

그리고 아직 익숙하지않은 배열을 선언하는 방법을 또 익혔다.