살아가는 이유_EU
내가 살아가는 이유, 삶
살아가는 이유_EU
전체 방문자
오늘
어제
  • 삶 (159)
    • 이유's EATERY (16)
      • 맛집 (10)
      • 까페 (4)
      • 맛있는 Recipe (1)
    • 이유's LIFE (16)
      • 국내여행 (5)
      • 해외여행 (2)
      • 운동 (1)
      • 취업정보 (0)
      • 끄적끄적 (5)
      • 일기쟝 (3)
      • 세상 이야기 (0)
      • 결혼 준비 (0)
    • 이유's Programming (43)
      • JavaScript (6)
      • Java (7)
      • C++ (0)
      • DBMS (24)
      • Spring (3)
      • til (1)
      • HTTP (2)
    • 이유's REVIEW (13)
      • BOOK (6)
      • PROGRAM or MOVIE (5)
      • PRODUCT 제품리뷰 (2)
    • 이유's STUDY (31)
      • 수업 관련 (2)
      • IT 시사 (2)
      • IT NEWS (2)
      • IVIEW (0)
      • IOS 앱 만들기 (0)
      • 알고리즘 문제풀이 (23)
      • PM data literacy (2)
    • 이유's ENGLISH (13)
      • Writing about something! (12)
      • Feedback (1)
      • TIL (0)
    • 이유's DB 공부 (1)
      • MySQL DB (0)
      • Postgre (1)
    • Computer 공부 (17)
      • Backend question (10)
      • Clean architecture (2)
      • Operating system (2)
      • Network (3)
      • 항해 (0)

블로그 메뉴

  • 홈
  • EATERY's 맛집
  • CAFE 까페
  • Recipe 레시피
  • IT 공부
  • 방명록
  • 태그

공지사항

인기 글

태그

  • 용인맛집
  • 고메커피
  • 아메리카토노
  • 자세요정
  • 용인추천
  • 피지오필로소피
  • 파스타맛집
  • 인절미 티라미수
  • 묵리
  • memoziation
  • Array로 접근
  • 흑임자 크림
  • 송계옥
  • key 로 접근
  • have something to do with
  • 스쿤브레드
  • 렌더링 수 줄이기
  • 현명하게 리액트
  • map 하는 법
  • 영어공부
  • 고메동 카페
  • React.memo
  • 어게인마이라이프
  • 용인까페
  • go hand in hand
  • 스테이크
  • have something to do with뜻
  • 자바스크립트
  • 삼돈식탁
  • 맛집

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
살아가는 이유_EU

내가 살아가는 이유, 삶

이유's STUDY/알고리즘 문제풀이

[Leetcode] Add two numbers

2022. 11. 1. 10:46
728x90
반응형

리트코드 - 링크드인을 사용하여 add tow numbers 를 진행함

 

1st. Try. 먼가 코드가 엄청 지저분해지고 조건문 이것저것이다... 

결국 하루 동안 고민하다가 답지를 보게 됨. 

/**
 * 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) {
    //sum listnode 
    ListNode sumNode = new ListNode(0);
    ListNode totalNode = new ListNode(0);
    
    int add=0;
    
    int i=0;
    while(l1 !=null || l2 !=null) {
        int a,b =0;
        int sum =0;
        a = l1.val;
        if(l2!=null)
            b = l2.val; 
        sum = a+b;
        
        if(add>0) {
            sum+= add;
            add =0;
        }
                
        if(sum >=10) {
            sum = sum -10;
            add +=1;
        }
        //해당 sumNode 에 대한 val 값을 입력 
        System.out.println(sum);
        sumNode.val = sum;
        System.out.println("sumNode"+sumNode.val);
        if(i==0)
        {
            totalNode = sumNode;
        }
        if(l1.next!= null || l2.next!= null) {
            ListNode nextNode = new ListNode(0);
  
        sumNode.next = nextNode;
        System.out.println("nextNode"+nextNode.val);

        sumNode = sumNode.next;
        }
        
        i++;
        l1 = l1.next;
        if(l2!=null)
            l2 = l2.next;
        
        //System.out.println("totalNode"+totalNode.val);
     }
     return totalNode;
    }

}

 

 

----참고하게 된 사이트 답지 내역

(3) Simple Solution - Add Two Numbers - LeetCode Discuss

 

Simple Solution - Add Two Numbers - 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

class Solution {
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
ListNode ret = new ListNode(0);
ListNode opr = new ListNode(0);
opr = ret;
int sum = 0;

 while(l1 != null || l2 != null || sum != 0){
     if(l1 != null){
         sum = sum + l1.val;
         l1 = l1.next;
     }
     if(l2 != null){
         sum = sum + l2.val;
         l2 = l2.next;
     }
     opr.next = new ListNode(sum%10);
     sum = sum/10;
     opr = opr.next;
 }
 return ret.next;
}

 

ToDO : [ 다시 한번 위 답안 고쳐서 풀기]/// 

- ADD 변수를 굳이 추가하지 않고/ 이제 마지막을 SUM  에 대한 변수로 통일화

- 그리고 IF 문 최대한 적게 쓰기 

/**
 * 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) {
    //sum listnode 
    ListNode sumNode = new ListNode(0);
    ListNode totalNode = new ListNode(0);
        
    //마지막에 이제 한 노드를 빼기가 어려우니 처음 노드를 빼는 것처럼 한다. . 
    totalNode = sumNode; 
    int add=0;
    int sum = 0; 
    int i=0;
    while(l1 !=null || l2 !=null || sum!=0 ) {
        int a =0;
        int b =0;
        if(l1!=null){
        a = l1.val;    
        l1 = l1.next;
        }
        
        if(l2!=null) {
        b = l2.val;     
        l2=l2.next;
        }
        
        sum += a+b;
        
        ///이 ADD 변수를 빼야 됬었다... 
//         if(add>0) {
//             sum+= add;
//             add =0;
//         }
                
//         if(sum >=10) {
//             sum = sum -10;
//             add +=1;
//         }
        //해당 sumNode 에 대한 val 값을 입력 ---바로 입력하는 것이 아니라 nextNode 에 대한 값을 입력 
        
        sumNode.next = new ListNode(sum%10);
        sum=sum/10;
        sumNode = sumNode.next;
        i++;
        
        //System.out.println("totalNode"+totalNode.val);
     }
     return totalNode.next;
    }

}

 

-----add 변수 추가해서 다시 풀이

/**
 * 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) {
    //sum listnode 
    ListNode sumNode = new ListNode(0);
    ListNode totalNode = new ListNode(0);
        
    //마지막에 이제 한 노드를 빼기가 어려우니 처음 노드를 빼는 것처럼 한다. . 
    totalNode = sumNode; 
    int add=0;
    int sum = 0; 
    int i=0;
    while(l1 !=null || l2 !=null ) {
        sum =add;
        
        if(l1!=null){
        sum+= l1.val;    
        l1 = l1.next;
        }
        
        if(l2!=null) {
        sum+= l2.val;     
        l2=l2.next;
        }       

        if(add>0) {
            add =0;
        }
                
        if(sum >=10) {
            sum = sum -10;
            add +=1;
        }
        //해당 sumNode 에 대한 val 값을 입력 ---바로 입력하는 것이 아니라 nextNode 에 대한 값을 입력 
        
        sumNode.next = new ListNode(sum);
        sumNode = sumNode.next;
        
        //System.out.println("totalNode"+totalNode.val);
     }
       
        if(add ==1){
            sumNode.next = new ListNode(1);
        }
        
     return totalNode.next;
    }

}
728x90
반응형
저작자표시 비영리 변경금지 (새창열림)

'이유's STUDY > 알고리즘 문제풀이' 카테고리의 다른 글

Greedy algorith - 코딩테스트 [탐욕법] : 조이스틱  (0) 2024.11.11
[ leetcode ] dfs 문제 - number of islands  (0) 2021.11.02
[ 자료구조 ] LinkedList  (0) 2021.08.26
[ 백준 ] 2580 번 - 스도쿠 / java 이용 / 아직 못 푼 문제 ㅠㅠ  (0) 2021.08.11
[ 백준 ] 1560번 - N과 m (2) --- java 이용  (0) 2021.08.06
    '이유's STUDY/알고리즘 문제풀이' 카테고리의 다른 글
    • Greedy algorith - 코딩테스트 [탐욕법] : 조이스틱
    • [ leetcode ] dfs 문제 - number of islands
    • [ 자료구조 ] LinkedList
    • [ 백준 ] 2580 번 - 스도쿠 / java 이용 / 아직 못 푼 문제 ㅠㅠ
    살아가는 이유_EU
    살아가는 이유_EU
    안녕하세요. 초보개발자의 일상을 담은 블로그입니다.

    티스토리툴바