Kotlin/Kotlin 알고리즘

백준 3449번 해밍 거리 Kotlin 구현해보기

kimc 2023. 3. 14. 23:22

```

백준 3449번 해밍 거리 Kotlin 구현해 보기

```

Kimc Kotlin Study

이번 글을 통해 배워갈 내용

  1. 백준 3449번 해밍 거리 풀이

https://www.acmicpc.net/problem/3449

 

3449번: 해밍 거리

입력을 여러 개의 테스트 케이스로 이루어져 있다. 첫째 줄에는 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 두 줄로 이루어져 있다. 각 줄에는 이진수가 하나씩 주어진다. 두 이진

www.acmicpc.net

백준 3449번 해밍거리는

난이도 브론즈 등급의 문제로서

 

테스트케이스만큼

두 이진수가 주어지면

두 이진수에 각 자릿수별로 다른 값을 세서 출력해 주면 됩니다.


30분 정도 위에 링크를 방문하셔서 풀어보시고

안 풀리시는 경우에만 아래 해답을 봐주시면 감사하겠습니다.


 

자릿수가 같은 수가 입력된다는 전제하에

각 자릿수를 비교해서

출력해 줍니다.

 

fun main() {
    val inputDto = getInput()
    print(solution(inputDto))
}

fun getInput(): InputDto {
    val testCaseCount = readln().toInt()
    val pairs = emptyList<NumPair>().toMutableList()
    for (i in 1..testCaseCount) {
        val numA = readln()
        val numB = readln()
        pairs.add(NumPair(numA, numB))
    }
    return InputDto(pairs)
}

data class InputDto(
    val pairs: List<NumPair>
)

data class NumPair(
    val numA: String,
    val numB: String
)

fun solution(dto: InputDto): String {
    return dto.pairs.joinToString("\n") { pair -> findHammingDistance(pair) }
}

fun findHammingDistance(pair: NumPair): String {
    var distance = 0

    for (i in 0 until pair.numA.length) {
        if (pair.numA[i] != pair.numB[i]) {
            distance++
        }
    }

    return "Hamming distance is ${distance}."

}

// https://codemasterkimc.tistory.com/

 

테스트

import org.junit.jupiter.api.Assertions.assertEquals
import org.junit.jupiter.api.Test

internal class MainKtTest {

    @Test
    fun test() {
        assertEquals(
            "Hamming distance is 1.",
            findHammingDistance(NumPair("0", "1"))
        )
        assertEquals(
            "Hamming distance is 16.",
            findHammingDistance(NumPair("1111111100000000", "0000000011111111"))
        )
    }
}

 

 

읽어주셔서 감사합니다

 

무엇인가 얻어가셨기를 바라며

 

오늘도 즐거운 코딩 하시길 바랍니다 ~ :)

 


 

728x90