문제 요약
단일 연결 리스트 두개가 주어지고, 숫자는 역순으로 저장되어있으며, 각 노드에는 한 자리 숫자가 포함되어있다.
두 숫자를 더한 합계를 연결 리스트로 반환해라.
문제 핵심
1. 단일 연결 리스트에 대한 이해
2. 계산중에 발생하는 받아올림 처리
3. 길이가 다른 리스트에 대한 예외처리
풀이방법
이 문제를 풀기 위해선 단일 연결 리스트에 대한 이해가 없으면 도저히 풀수 없는데, 개념은 알고 있어도 실제로 사용해본 적이 없어서 문제에 어떤식으로 적용해야할지 몰랐다. 따라서 연결리스트에 대한 공부를 다시하고, 문제를 해결했다. 이 문제는 반복해서 풀어봐야할 것 같다.
소요 시간 : 36분
시간 복잡도 : O(n)
public class Solution {
public ListNode AddTwoNumbers(ListNode l1, ListNode l2) {
ListNode result = new();
ListNode head = result; // result의 Head
int sum = 0; //두 연결 리스트의 합
//l1,l2가 Null 이면, ListNode의 끝을 의미
while(l1 != null || l2 != null || sum > 0)
{
if(l1 != null)
{
sum += l1.val;
l1 = l1.next; //다음
}
if(l2 != null)
{
sum += l2.val;
l2 = l2.next; //다음
}
result.next = new ListNode(sum % 10); //다음 Node생성과 동시에 초기화
sum /= 10; //받아올림 역할, 결과값은 다음 덧셈에 더해짐
result = result.next; //다음
}
return head.next; //시작 부분을 반환
}
}
코테 시작한지 2일차인데, 느낀점은 문제를 풀면서 기본기와 내실을 다질 수 있어서 좋은 것 같다.
이제 2번 문제인데 막히는게 현타가 오지만, 모르는 문제를 풀어냈을 때, 기분은 좋다. 지식의 공백이 채워지는 느낌
'알고리즘' 카테고리의 다른 글
LeetCode in C# 4. Median of Two Sorted Arrays (0) | 2025.03.30 |
---|---|
LeetCode in C# 3. Longest Substring Without Repeating Characters (0) | 2025.03.28 |
LeetCode in C# 1. Two Sum (0) | 2025.03.22 |
알고리즘 공부에 대하여 (0) | 2025.03.22 |
프로그래머스 [C#] 멀리뛰기 (0) | 2024.11.04 |