백준 8958. OX퀴즈

지니어스현·2022년 3월 26일
0

algorithm

목록 보기
1/1

문제

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

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

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

풀이

1. Java

import java.util.Scanner;

class Main {
    
    public static void main(String[] args) {
        final Scanner scanner = new Scanner(System.in);

        int testcase = scanner.nextInt();
        String[] array = new String[testcase];

        for (int i = 0; i < testcase; i++) {
            array[i] = scanner.next();
        }

        scanner.close();

        for (int i = 0; i < testcase; i++) {
            int count = 0;
            int sum = 0;

            for (int j = 0; j < array[i].length(); j++) {
                if (array[i].charAt(j) == 'O') {
                    count++;
                } else {
                    count = 0;
                }
                sum += count;
            }

            System.out.println(sum);
        }
    }
}

2. Kotlin

import java.util.*

/**
 * https://www.acmicpc.net/problem/8958
 */
fun main() = with(Scanner(System.`in`)) {

    val testCase = nextInt()
    val array = Array(testCase) { "" }

    for (i in 0 until testCase) {
        array[i] = next()
    }

    for (i in 0 until testCase) {
        var count = 0
        var sum = 0

        for (j in 0 until array[i].length) {
            if (array[i][j] == 'O') {
                count++
            } else {
                count = 0
            }
            sum += count
        }

        println(sum)
    }
}

돌아보기

아직은 코틀린에서 배열 선언하는 것이 익숙치 않아서 문제를 많이 풀면서 손에 익혀야 할 것 같다.
그리고 자바에서 쓰던 .charAt()이 없어 당황했는데 그냥 배열의 인덱스로 값 찾듯이 array[i][j] 하면 되는 거였다. 넘나 편리한 것! 이런 부분은 파이썬이랑 비슷하다고 느껴짐

작년에 취업 준비하면서 이 문제 풀 때는 한참 끙끙거렸던 것 같은데 이번에는 쉽게 풀어냈다. 어떻게 풀어야 하는지도 머릿속에 그려지고 생각한 대로 코드 작성하니 그냥 술술 풀림(당연한 건가?) 어쨌든 1년 동안 많이 성장했다는 것이 느껴진다.

profile
넓은 바다에서 유영하는 범고래

0개의 댓글

관련 채용 정보