본문 바로가기
알고리즘 문제 풀이/구현

백준 - 맞았는데 왜 틀리죠?(Java, Kotlin)

by 가나무마 2022. 2. 21.
728x90

본 알고리즘 풀이는 Routine Study에서 진행하고 있습니다.

https://github.com/ROUTINE-STUDY/Algorithm

 

저를 포함한 구성원이 대부분 초보이므로, 원하시는분은 언제라도 들어오셔도 좋습니다.

 

GitHub - ROUTINE-STUDY/Algorithm: 초보 알고리즘 스터디 / 누구나 참여 가능

초보 알고리즘 스터디 / 누구나 참여 가능 :runner:. Contribute to ROUTINE-STUDY/Algorithm development by creating an account on GitHub.

github.com

문의는 댓글 바람.

 

문제 출처 : https://www.acmicpc.net/problem/15820

 

[문제 설명]

간단한 입출력 문제.

 

[접근 방법]

최악의 경우 모든 문제를 검증해야하므로 시간복잡도는 O(S1+S2).

문제나 테스트케이스를 저장하거나 하지 않으므로 공간복잡도는 O(1).

 

[처음 작성한 코드]

import java.io.BufferedReader
import java.io.InputStreamReader

fun main() = with(BufferedReader(InputStreamReader(System.`in`))) {
    val (cntOfSampleTest, cntOfPrivatTest) = readLine().split(" ").map {it.toInt()}
    repeat(cntOfSampleTest) {
        val (myAnswer, realAnswer) = readLine().split(" ").map { it.toInt() }
        if (myAnswer != realAnswer) {
            println("Wrong Answer")
            return
        }
    }

    repeat(cntOfPrivatTest) {
        val (myAnswer, realAnswer) = readLine().split(" ").map { it.toInt() }
        if (myAnswer != realAnswer) {
            println("Why Wrong!!!")
            return
        }
    }

    println("Accepted")
}

[다른 사람 답안 보고 리팩토링]

import java.io.BufferedReader
import java.io.InputStreamReader

fun main() = with(BufferedReader(InputStreamReader(System.`in`))) {
    val (cntOfSampleTest, cntOfPrivateTest) = readLine().split(" ").map {it.toInt()}
    fun checkIsAllCorrect(cntOfCase: Int): Boolean {
        repeat(cntOfCase) {
            val (myAnswer, realAnswer) = readLine().split(" ").map { it.toInt() }
            if (myAnswer != realAnswer) {
                return false
            }
        }
        return true
    }

    val outputMsg = if (!checkIsAllCorrect(cntOfSampleTest))
        "Wrong Answer"
    else if (!checkIsAllCorrect(cntOfPrivateTest))
        "Why Wrong!!!"
    else
        "Accepted"

    println(outputMsg)
}

[Java]

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;

class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int[] input = Arrays.stream(br.readLine().split(" ")).mapToInt(it -> Integer.parseInt(it)).toArray();

        for (int i = 0; i < input[0]; i++) {
            int[] answerAndTestCase = Arrays.stream(br.readLine().split(" ")).mapToInt(it -> Integer.parseInt(it)).toArray();
            if (answerAndTestCase[0] != answerAndTestCase[1]) {
                System.out.println("Wrong Answer");
                return;
            }
        }

        for (int i = 0; i < input[1]; i++) {
            int[] answerAndTestCase = Arrays.stream(br.readLine().split(" ")).mapToInt(it -> Integer.parseInt(it)).toArray();
            if (answerAndTestCase[0] != answerAndTestCase[1]) {
                System.out.println("Why Wrong!!!");
                return;
            }
        }

        System.out.println("Accepted");
    }
}

 

코틀린 로컬함수 예전에 본 적이 있는데 거의 써본 적이 없다.

이번에 다른 사람 코드를 보고 써봤는데 편하고 좋다 

728x90
반응형

'알고리즘 문제 풀이 > 구현' 카테고리의 다른 글

백준 - 빙고(Kotlin)  (0) 2022.03.23
백준 - 추월(Kotlin)  (0) 2022.02.24
백준 - 달팽이 리스트(Kotlin)  (0) 2022.02.20
백준 - 물 주기(Kotlin)  (0) 2022.02.06
백준 - 기상캐스터  (0) 2022.01.30