문제
https://leetcode.com/problems/add-two-numbers/description/
leetcode 사이트의 문제는 처음 풀어본다! 신기...
백준은 자유형식, 프로그래머스는 함수 형태로 초기 포맷이 주어진다면, 여기에서는 class 형태로 기본 포맷이 주어진다는 게 가장 특이한 점인듯
주요 아이디어
문제가 영어지만(...) 풀이 과정 자체는 굉장히 간단한 편!
- 음수가 아닌 수만 담겨있는 2개의 linked list를 입력 받고
- 둘을 합한 수가 담긴 linked list 반환하기
코드 구현 (Python 3)
더보기
# Definition for singly-linked list.
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
"""
양방향은 안되는...듯?
그러면 그냥 next 해주면서 자릿수**10 해서 더해주기
-> 출력도 어차피 역순이므로 그냥 순회하면서 더해주는 게 더 깔끔할 것 같음
입력부터 써줘야하는 줄 알았는데 그냥 Solution class만 완성하면 됨
"""
from typing import Optional
class Solution:
def addTwoNumbers(self, l1: Optional[ListNode], l2: Optional[ListNode]) -> Optional[ListNode]:
result_header = ListNode(0)
p = result_header
value = 0
# l1, l2 둘 다 끝나고, value 끝까지 갈 때까지
while l1 or l2 or value:
if l1:
value += l1.val
l1 = l1.next
if l2:
value += l2.val
l2 = l2.next
p.next = ListNode(value % 10) # 자릿수
p = p.next
value = value // 10 # 다음 자릿수
return result_header.next
제출 결과
이런 식으로 내가 리더보드 몇 %에 들었는지 바로바로 확인도 가능..
해외 취업을 노린다면 꼭 필요할 듯 하다!
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 요격 시스템 (0) | 2024.06.25 |
---|---|
[프로그래머스] 단속 카메라 (0) | 2024.06.25 |
[프로그래머스] 문자열 압축 (0) | 2024.06.25 |
[프로그래머스] 거리두기 확인하기 (0) | 2024.05.21 |
[프로그래머스] 키패드 누르기 (0) | 2024.05.21 |