위지원의 데이터 일기 🐈
Home
  • 분류 전체보기 (563)
    • ✎ 2025년 (4)
    • 2024년 (16)
    • 2023년 (6)
    • 2022년 (35)
      • Developement (22)
      • Error (9)
    • 2021년 (68)
      • ERROR (9)
      • 알고리즘 (11)
      • 개발공부 (21)
      • Data (15)
      • 21.下 (12)
    • 2020년 (164)
      • 코테 (84)
      • Development (29)
      • 정처기 (41)
    • 2019년 (27)
    • 2018년 (89)
      • English Speaking (8)
      • Error (12)
      • C, Java, FileSystem (13)
      • DataBase (15)
      • Java (2)
      • 지식 (16)
      • Go (3)
      • spark (9)
      • 영어 (5)
      • 알고리즘 (6)
    • 2017년 (143)
      • Error (17)
      • machine learning (16)
      • Spark (20)
      • Database (19)
      • Python (17)
      • Spring (9)
      • etc. (10)
      • 백준 (5)
      • Google Platform (12)
      • web Development (7)
      • Docker (3)
      • Linux (8)
Home
  • 분류 전체보기 (563)
    • ✎ 2025년 (4)
    • 2024년 (16)
    • 2023년 (6)
    • 2022년 (35)
      • Developement (22)
      • Error (9)
    • 2021년 (68)
      • ERROR (9)
      • 알고리즘 (11)
      • 개발공부 (21)
      • Data (15)
      • 21.下 (12)
    • 2020년 (164)
      • 코테 (84)
      • Development (29)
      • 정처기 (41)
    • 2019년 (27)
    • 2018년 (89)
      • English Speaking (8)
      • Error (12)
      • C, Java, FileSystem (13)
      • DataBase (15)
      • Java (2)
      • 지식 (16)
      • Go (3)
      • spark (9)
      • 영어 (5)
      • 알고리즘 (6)
    • 2017년 (143)
      • Error (17)
      • machine learning (16)
      • Spark (20)
      • Database (19)
      • Python (17)
      • Spring (9)
      • etc. (10)
      • 백준 (5)
      • Google Platform (12)
      • web Development (7)
      • Docker (3)
      • Linux (8)
블로그 내 검색
포트폴리오

위지원의 데이터 일기 🐈

데이터를 사랑하고 궁금해하는 기록쟁이입니다! 😉 Super Data Girl이 되는 그날까지🏃‍♀️ 화이팅!

  • 🖥 깃블로그
  • 🌍 위키원
  • 📑 내맘대로 스크랩
  • 💌 메일
  • 2021년/알고리즘

    [파이썬 알고리즘 인터뷰] 두 수의 덧셈

    2021. 3. 22. 19:50

    by. 위지원

    1. (16) 두 수의 덧셈
      1. 1. 나의 풀이
      2. 2. 풀이법

    (16) 두 수의 덧셈

    ★★ Normal

    github.com/onlybooks/algorithm-interview

     

    [LeetCode]

     

     

    Add Two Numbers - LeetCode

    Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

    leetcode.com


    1. 나의 풀이

    ;; 책에 있는 코드 너무 길다.  연결리스트를 뒤집고 연결리스트를 더하고 다시 변환하고.. 엄첨난 양의 코드다.

    난 그냥 문자열로 합치고 뒤집은 다음에 더했다.  아래처럼 풀어도 책에 있는 풀이와 속도차이가 없다.

    # Definition for singly-linked list.
    # class ListNode:
    # def __init__(self, val=0, next=None):
    # self.val = val
    # self.next = next
    class Solution:
    def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode:
    str_l1, str_l2 = '', ''
    while l1:
    str_l1 += str(l1.val)
    l1 = l1.next
    while l2:
    str_l2 += str(l2.val)
    l2 = l2.next
    sum_val = int(str_l1[::-1]) + int(str_l2[::-1])
    if sum_val == 0:
    return ListNode(val=0)
    else:
    sum_val = str(sum_val)
    answer = ListNode(val=sum_val[-1])
    node = answer
    for val in sum_val[-2::-1]:
    node.next = ListNode(val=val)
    node = node.next
    return answer

     


    2. 풀이법

     2-1. 전가산기 구현

    ..? 갑자기 전가산기?! 

     

    아, 두 값을 더해서 나머지가 있으면 다음 계산 때 추가해주는 방식을 이야기하는 것이였다. 

     

     

    onlybooks/algorithm-interview

    <파이썬 알고리즘 인터뷰> 95가지 알고리즘 문제 풀이로 완성하는 코딩 테스트. Contribute to onlybooks/algorithm-interview development by creating an account on GitHub.

    github.com

     

     

    자바

    자바가... Interger.parseInt의 자리수에 막혀서 위 풀이가 먹히질 않는다.. 

    Double.parseDouble을 이용해보긴 했는데 그럼 toString()에서 막힌다. 9.999999991E9 > 그대로 E를 집어넣어버림.. ㅇ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) {
    String str1="", str2="";
    while(l1 != null){
    str1 += String.valueOf(l1.val);
    l1 = l1.next;
    }
    while(l2 != null){
    str2 += String.valueOf(l2.val);
    l2 = l2.next;
    }
    StringBuffer sb1 = new StringBuffer(str1);
    String reverseStr1 = sb1.reverse().toString();
    StringBuffer sb2 = new StringBuffer(str2);
    String reverseStr2 = sb2.reverse().toString();
    int sum_val = Integer.parseInt(reverseStr1) + Integer.parseInt(reverseStr2);
    String str_sum_val = "";
    if(sum_val == 0)
    return new ListNode(0);
    else
    str_sum_val = String.valueOf(sum_val);
    int firstval = str_sum_val.charAt(str_sum_val.length()-1) - '0';
    System.out.println(firstval);
    ListNode answer = new ListNode(firstval);
    ListNode node = answer;
    for (int i = str_sum_val.length()-2 ; 0 <= i ; i--) {
    node.next = new ListNode(str_sum_val.charAt(i) - '0');
    node = node.next;
    }
    return answer;
    }
    }

     

    Discussion보니까 다 가산기 방법으로 푸렀닭 🐔

    아래 코드가 굉장히 인상적이였다. 

    삼항 연산자를 엄첨 자주쓰는것을 보았다.  자바에서는 삼항 연산자가 짱인갑다. 이론은 같다.

     

    My easy JAVA solution - LeetCode Discuss

    Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

    leetcode.com

    public class Solution {
    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
    int carry = 0;
    ListNode temp = new ListNode(0);
    ListNode head = temp;
    while(l1 != null || l2 != null || carry != 0){
    int value = (l1 == null ? 0: l1.val) + (l2 == null ? 0: l2.val) + carry;
    carry = 0;
    carry = value/10;
    value = value%10;
    temp.next = new ListNode(value);
    temp = temp.next;
    l1 = l1 != null?l1.next:l1;
    l2 = l2 != null?l2.next:l2;
    }
    head = head.next;
    return head;
    }
    }
    profile
    위지원

    데이터 엔지니어로 근무 중에 있으며 데이터와 관련된 일을 모두 좋아합니다!. 특히 ETL 부분에 관심이 가장 크며 데이터를 빛이나게 가공하는 일을 좋아한답니다 ✨

    저작자표시 (새창열림)

    '2021년 > 알고리즘' 카테고리의 다른 글

    [파이썬 알고리즘 인터뷰] 페어의 노드 스왑  (0) 2021.03.23
    [파이썬 알고리즘 인터뷰] 역순 연결 리스트  (0) 2021.03.22
    파이썬을 파이썬답게  (0) 2021.03.22
    [파이썬 알고리즘 인터뷰] 두 정렬 리스트의 병합  (0) 2021.03.22
    [파이썬 인터뷰 알고리즘] 주식을 살고팔기 가장 좋은 시점  (0) 2021.03.18

    잠깐만요~! 읽으신김에 이런 글들은 어떠세요? 👀

    • [파이썬 알고리즘 인터뷰] 역순 연결 리스트 2021.03.22
    • 파이썬을 파이썬답게 2021.03.22
    • [파이썬 알고리즘 인터뷰] 두 정렬 리스트의 병합 2021.03.22
    • [파이썬 인터뷰 알고리즘] 주식을 살고팔기 가장 좋은 시점 2021.03.18
    맨 위로
전체 글 보기
Tistory 로그인
Tistory 로그아웃
로그아웃 글쓰기 관리

열정! 열정! 열정! 🔥

Designed by Nana
블로그 이미지
위지원
데이터 엔지니어로 근무 중에 있으며 데이터와 관련된 일을 모두 좋아합니다!. 특히 ETL 부분에 관심이 가장 크며 데이터를 빛이나게 가공하는 일을 좋아한답니다 ✨

티스토리툴바

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.