반응형
Medium이라지만 오히려 쉬운듯 하다.
시각화? 가 잘 되어 있어서 문제 이해는 어렵지 않다.
문제 설명
one way의 linkedList가 아래와 같이 정의되어 있다.
순서대로
2,4,3-> 342
5,6,4-> 465
를 의미하며 342+465 = 807을 마찬가지의 형태인
7,0,8을 나타내는 listNode로 리턴해야 한다.
문제 풀이
딱히 풀이라고 할 것도 없다. 10이 넘어가는 경우데 대해서만 잘 처리해주면 된다.
처음에는 isOverTen이라는 boolean을 선언하여 코드를 짰는데,
그보다는 int over 을 정의하여 이전 두 수의 합이 10이 넘을 경우 1, 아니면 0을 담도록 했다.
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode() {}
* ListNode(int val) { this.val = val; }
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
* }
*/
class Solution {
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
int over=0;
ListNode rVal = new ListNode();
ListNode returnNode = rVal;
while(true){
int val = 0;
if(l1!=null) {
val+=l1.val;
l1=l1.next;
}
if(l2!=null){
val+=l2.val;
l2=l2.next;
}
// 이전 결과로부터 가져오는거지요.
val+=over;
over=val/10;
rVal.val = val%10;
if(l1==null&& l2==null && over==0) break;
rVal.next=new ListNode();
rVal = rVal.next;
}
return returnNode;
}
}
문제 평가?
자료 구조가 주어지니 아주 편안하게 풀 수 있었다.
다른 풀이를 보니 재귀로 구현한 것도 있었다. ㄷ.ㄷ
※ 효율성을 위해서 l1, l2 중 null이 나오면 null 안 나온걸로 이을려고 했는데, 그럴 경우 [9,9,9,9,9]에 대해서 처리가 불가능하다는 사실..!
반응형
'코딩 테스트' 카테고리의 다른 글
[코딩테스트] Quick Sort(.feat C) (0) | 2024.02.03 |
---|---|
[LeetCode] 3. Longest Substring Without Repeating CharactersMedium - Medium (0) | 2023.02.15 |
[LeetCode] 1. Two Sum - Easy (0) | 2023.02.15 |
[프로그래머스] 디스크 컨트롤러 (0) | 2023.02.10 |
[코딩테스트] 프로그래머스 : 주식가격 (0) | 2022.12.05 |
댓글