LeetCode 문제 풀이
[LeetCode] 2번 문제를 풀어보았다. (ft. java)
pantrom
2022. 3. 10. 20:11
2022년 03월 10일 목요일 - 오늘 처음으로 미리 풀어둔 문제가 오늘의 문제로 나왔다!!
오늘 올려볼 문제는 2번 Add Two Numbers 이라는 문제이다.
사진을 클릭하면 해당 문제로 이동합니다.
오늘도 LeetCode 사이트 오늘의 문제를 가지고 왔다.
오늘은 BigInteger 안쓰고 풀어봤다
입력
사진에서도 볼 수 있듯이 Linked List 2개가 입력으로 들어온다.
풀이 및 코드
주어진 Linked List 를 뒤집은 수를 더하고 Linked List로 만들어 리턴하는 문제다.
오늘은 처음부터 정답을 생각해냈다.
Queue 2개를 만들어 각자 Linked List의 원소들을 넣는다.
그리고 Queue에서 값을 뽑은 다음 합하여 Linked List를 만드는 식으로 구현했다.
이제 코드를 봐보자!
풀이코드
import java.math.BigInteger;
class Solution {
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
Queue<Integer> s1 = new LinkedList<Integer>();
Queue<Integer> s2 = new LinkedList<Integer>();
for(int i = 0; l1 != null; i++)
{
s1.add(l1.val);
l1 = l1.next;
}
for(int i = 0; l2 != null; i++)
{
s2.add(l2.val);
l2 = l2.next;
}
ListNode result = new ListNode();
ListNode node = result;
int next = 0;
while(!s1.isEmpty() || !s2.isEmpty())
{
int now = next + (s1.isEmpty() ? 0 : s1.poll()) + (s2.isEmpty() ? 0 : s2.poll());
node.next = new ListNode(now % 10);
next = now / 10;
node = node.next;
}
if(next > 0)
{
node.next = new ListNode(next);
node = node.next;
}
return result.next;
}
}
제출 화면
오늘은 풀었던 문제지만 메모리를 더 적게 써보려고 다시 풀었다. (근데 집에서 돌리니깐 다시 메모리 높아짐 ㅡㅡ)
내일도 재밌는 문제가 나왔으면 좋겠다.
내일도 문제를 풀어서 블로그에 글을 쓸 수 있으면 좋겠다.