inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

38군데 합격 비법, 2026 코딩테스트 필수 알고리즘

2-6. 링크드 리스트 문제

2-6 LinkedList 합계 자바 풀이

해결된 질문

155

정근희

작성한 질문수 2

0

1. 현재 학습 진도

 

2. 어려움을 겪는 부분

 

3. 시도해보신 내용

파이썬 코드를 자바로 변환해서 풀어봤는데 이렇게 접근해도 좋은 풀이 일까요~?

이렇게 구체적으로 알려주시면, 더 정확하고 도움이 되는 답변을 드릴 수 있습니다! 😊

python 코딩-테스트 알고리즘 data-structure

답변 2

0

딩코딩코

안녕하세요 근희님! 좋은 질문 감사합니다

자바로 새롭게 코드를 작성해서 풀어보다니 너무 훌륭합니다!!

 

파이썬 코드와 비교해보면 개념적으로 동일한 접근법을 사용하신 것 같습니다. 다만 파이썬 코드에서는 get_single_linked_list_sum 함수에서 순회하면서 값을 계산할 때 자릿수를 고려하여 곱하기 10을 하는 방식을 사용했고, 자바 코드에서는 StringBuilder를 활용해 문자열로 만든 후 숫자로 변환하는 방식을 사용하셨습니다.

 

두 방식 모두 잘 작동하며 각각의 장단점이 있습니다

  1. 파이썬 코드 방식 (곱하기 10 사용):

    • 장점: 숫자를 바로 계산하므로 추가 변환 없음

    • 단점: 연결 리스트가 매우 길면 자릿수 계산에 주의해야 함

  2. 자바 코드 방식 (StringBuilder 사용):

    • 장점: 문자열 조작이 직관적이고 코드가 간결함

    • 단점: 문자열→숫자 변환 과정이 추가됨

 

다만, 자바 코드에서 한 가지 주의할 점이 있습니다.

while (cur1 != null && cur2 != null) { 
    firstNumber.append(cur1.data); 
    secondNumber.append(cur2.data); 
    cur1 = cur1.next; 
    cur2 = cur2.next; 
}

 

이 부분은 두 연결 리스트의 길이가 다른 경우 처리를 못할 수 있습니다. 예를 들어, 한 리스트가 다른 리스트보다 길면 긴 리스트의 나머지 부분이 무시될 수 있습니다. 따라서 다음과 같이 수정하면 더 확장성 있는 코드로 사용될 수 있습니다.

while (cur1 != null) {
    firstNumber.append(cur1.data);
    cur1 = cur1.next;
}

while (cur2 != null) {
    secondNumber.append(cur2.data);
    cur2 = cur2.next;
}

이 내용을 제외하면, StringBuilder를 활용한 접근법은 자바스러운 좋은 풀이입니다! 수업의 내용을 이해하고 자바로 새롭게 풀어보는 모습 너무 훌륭하십니다!! 코테 부술때까지 파이팅이십니다!

 

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다.
정근희님께서 공유해주신 LinkedList 합계 구하는 자바 코드를 잘 보았습니다.

  1. 적절한 데이터 구조 사용: LinkedList의 각 노드를 탐색하며 숫자를 문자열로 결합하고, 이를 숫자로 변환하여 합을 구하는 방식은 문제를 해결하기 위한 적절한 접근 방식입니다. 만약 숫자가 매우 큰 경우에도 StringBuilder를 사용한 방법은 Java의 Integer.MAX_VALUE 초과 문제를 피할 수 있어 좋습니다.

  2. 코드 개선 제안:

    • 현재 코드에서는 두 리스트의 길이가 같다고 가정하고 있습니다. 다양한 길이의 리스트에도 대응할 수 있도록 개선할 수 있습니다.
    • 두 리스트에서 하나가 끝나더라도, 다른 리스트가 남아있는 경우도 고려하면 좋겠습니다.
  3. 성능 개선:

    • 현재 코드에서는 두 리스트에서 동일한 위치의 노드를 각기 갖고 와서 String을 계속해서 append하고 있습니다. 이를 대신할 수 있는 방식으로 두 리스트의 각 자릿수를 더하고, 새로운 노드를 결과로 생성하는 것도 고려해볼 수 있습니다.
  4. 코드 실행 및 테스트 필요:

    • 외부 조건이나 추가적인 예외 사항들을 고려하여, 다양한 경우에 대한 테스트 케이스를 만들어 테스트를 수행해 보시면, 더 견고하고 완성도가 높은 코드를 작성할 수 있습니다.

현재 작성하신 코드는 기본적인 로직으로 연결 리스트의 합을 구하는 데 있어 효과적입니다. 이러한 방법을 통해 논리 구현 능력을 향상시킬 수 있습니다. 더 궁금한 사항이 있으면 언제든지 문의주세요! 😊

출처: Spring Boot Reference Documentation
인프런 FAQ

수강평 이벤트

0

34

2

코딩테스트 처음인데 이런 공부방법이어도 괜찮을까요

0

70

2

3-3 정렬-2 선택정렬 로직

0

43

2

링크드 리스트 끝에서 k번째 값 출력하기

0

46

2

LinkedList 과제 Fast, slow 포인터

0

50

2

투포인터 시간복잡도

0

53

2

수강평 작성 후 자료

0

53

2

수업교재 링크 오류

2

114

2

프로그래머스에서 제출 후 채점시 틀림ㅠ

0

133

2

1-10 알고리즘 더 풀어보기(2) 질문 있습니다

0

76

2

문제 풀이 방식 관련 질문입니다!

0

88

2

1-5 알고리즘과 친해지기 (2) - 최빈값찾기 질문 있습니다

0

94

2

수업자료 pdf 받고싶습니다

0

108

2

강의 자료 오류 수정

0

75

1

2-10 더하거나 빼거나 관련 질문입니다

0

63

2

3-8 해쉬 -2

0

49

2

Linked List Element Delete Explanation Problem

0

69

2

강의3-4 스택 탑 문제

0

74

2

코드스니펫 입출력 케이스에 오류가 있는것 같아요

0

100

3

링크드 리스트 원소 찾기 구현 방식 질문드립니다.

0

76

2

1874 - 스택 문항

0

81

2

DP Java 예제 자료형 오버플로우 문제

0

100

2

4-9 4주차 숙제중 농심라면 문제

0

111

2

DFS 에서 스택을 사용하는 이유

1

187

3