👨‍🏫ps/leetcode

[leetcode] 2.Add Two Numbers [Kotlin]

peacekim 2025. 1. 5. 18:12
반응형

문제분석

1. linkedList 문제이다.

2. Int는 10자리지만, 첫째자리가 2가 넘으면 안되기 때문에, 일반적으로 먼저 계산을 한 후, linkedList로 만드는 형식으로는 Int value값이 넘어 갈 수 있다.

 

문제해결

1. l1과 l2의 각 자리 수를 차례대로 더 해준다.

2. 만약, 더 한 값이 10을 넘어간다면 다음 자리 수 더할 때 더해주도록 한다.

3. l1과 l2의 자리 수가 같진 않기 때문에, 없는 값이라면 0을 더해주도록 한다.

4. 만약, l1과 l2를 순회했는데, 다음 자리 수에 더해야되는 값이 1이라면 추가 Node를 만들어 더해준다.

 

class Solution {
    fun addTwoNumbers(l1: ListNode?, l2: ListNode?): ListNode? {
        var listNode1: ListNode? = l1
        var listNode2: ListNode? = l2
        var dummy: ListNode? = ListNode(0)
        var cur = dummy
        var nextZariSue = 0
        while (listNode1 != null || listNode2 != null) {
            var listNode1Val = listNode1?.`val` ?: 0
            var listNode2Val = listNode2?.`val` ?: 0
            val nextValue = listNode1Val + listNode2Val + nextZariSue
            nextZariSue = nextValue / 10
            cur?.next = ListNode(nextValue % 10)
            cur = cur?.next
            listNode1 = listNode1?.next
            listNode2 = listNode2?.next
        }
        if (nextZariSue == 1) cur?.next = ListNode(nextZariSue)
        return dummy?.next
    }
}
반응형