inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비

2. 공통원소구하기(two pointers algorithm)

공통원소 구하기 질문입니다.

54

I love polk

작성한 질문수 1

0

image.png

해당 코드의 실패 예시가

image.png

결과 값이 5 999999999 1000000000 가 출력 되야 되는데 5만 출력 됩니다.

위의 코드에서 flist, slist를 ArrayList로 선언 했는데

이를 int[]로 변경 후 동작을 하면 정상적으로 동작이 됩니다.

int[]로 선언 했을 때랑 ArrayList로 선언 했을때 차이가 있는건지 제가 while문안에 비교를 잘못한건지 모르겠어서 질문드립니다..

java 코딩-테스트

답변 1

1

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다.
I love polk님, 코드에서 ArrayListint[] 간의 차이에 대해 질문해주셨네요.

두 자료구조의 차이점을 고려했을 때 주의해야 할 포인트는 다음과 같습니다:

  1. 정렬 후 중복 검사: ArrayList는 객체를 담고 있으며, 기본적으로 equals() 메소드를 사용하여 값을 비교합니다. 두 리스트를 정렬 후 비교할 때, 만약 오류가 난다면 중복된 요소가 필터링되지 않는지 또는 비교가 원하는 형태로 수행되지 않는지를 확인해야 합니다.

  2. 데이터 타입: ArrayList는 객체 형태이므로 래퍼 클래스를 통해 박싱되어 비교됩니다. 하지만 int[]는 기본적으로 원시 자료형을 통해 직접 비교됩니다. 만약에 ArrayList 사용 시 값 비교에서 의도하지 않게 박싱된 객체들 간에 비교가 올바르게 되지 않을 수 있으므로 주의해야 합니다.

  3. 메모리 접근 형태: ArrayList는 내부에서 불필요한 메모리 할당이나 확장 작업이 있을 수 있으니 성능에 민감하게 동작하는 상황에서는 직접 배열(int[])을 사용하는 것이 좋을 수 있습니다.

두 자료구조 간의 차이에 따른 문제가 발생할 수 있는 부분을 중점적으로 확인하시길 권장합니다. 문제가 발생하는 부분의 비교나 로직을 점검해보는 것이 좋습니다. 혹시 코드에서의 문제점이 명확하지 않다면, 디버깅을 통해 비교가 올바르게 수행되는지 확인하는 것도 좋은 방법입니다.

추가적으로 문제가 계속 발생할 경우, 배열과 리스트를 사용하는 예제를 교차 비교하면서 디버깅하면 도움이 될 것입니다.
화이팅입니다!

이미지 출처: - 링크1
이미지 출처: - 링크2

안녕하세요. 바뀐 채점사이트 관련해서 문의드립니다.

0

32

1

갑자기 채점 사이트가 바뀌었어요

0

33

1

문제 리스트 페이지

0

29

1

채점 사이트 관련 질문드립니다

0

24

1

봉우리 문제 질문입니다

0

83

2

씨름 선수 문제에서 각 선수의 몸무게나 키가 같을 수도 있다면?

0

65

0

이 코드랑 영상 코드중에 뭐가 더 좋은 코드인가요?

0

72

0

가중치 방향 그래프에서 가중치가 0인 간선을 표현하는 방법

0

67

1

좌표 정렬 문제 이 코드가 왜 틀린지 모르겠습니다 ㅠㅠ

0

85

2

6-7 강의에서

0

48

1

6-6. 장난꾸러기 질문 있습니다.

0

45

1

강의 수강후 코딩테스트

0

111

1

answer 변수 사용 여부

0

46

1

2중 for문

1

85

2

2-11. 임시반장정하기 (Runtime Error)

0

63

1

혹시 LinkedList 같은 자료 구조들은 따로 배우지 않나요?

0

70

1

이런 풀이는 어떨까요

0

44

1

자바 스트림 방식의 효율성 질문 드립니다.

0

57

1

알고리즘 자료 구조들..

0

63

1

StringBuilder vs BufferdWriter

0

48

1

원더랜드(프림)

0

50

1

이런 코드는 어떤가요?

0

61

1

bfs 풀이

0

57

1

병합정렬

0

57

1