🔍 자바는 다중 상속을 지원하지 않는다자바는 다중 상속을 지원하지 않는다. 따라서 extend 대상은 하나만 선택할 수 있다.위 그림과 같이 만약 비행기와 자동차를 상속 받아 하늘을 나는 자동차(AirplaneCar)를 만든다고 했을 때, 다중 상속을 사용하게 되면 AirplaneCar 입장에서 move()를 호출할 때 어떤 부모의 move()를 사용해야 할지 애매한 문제가 발생하게 된다. 이 문제를 다이아몬드 문제라고 한다. 또, 다중 상속을 사용하면 클래스 계층 구조가 매우 복잡해질 수 있기 때문에 자바는 클래스의 다중 상속을 허용하지 않는다. 대신 인터페이스의 다중 구현을 허용하여 이런 문제를 피할 수 있다.
배낭 문제가 뭔지 잘 모른다면 이 글을 읽고 오자! 🔍 배낭 문제에서 넣은 물건을 어떻게 찾을까?보통 배낭 문제에서는 어떤 물건을 넣었는지 보다는 가치의 최댓값을 물어보기 때문에, 해당 방식을 무조건 알지 않아도 된다고 생각한다.하지만 내가 풀지 못했던 코딩테스트 문제에서는 내 생각에는 넣은 물건을 알아야 문제를 풀 수 있었다. 따라서 배낭 문제에서 넣은 물건을 찾는 방법에 대해 추가로 글을 작성하게 됐다. ▶️ 넣은 물건을 찾는 방법바로 선택된 물건을 역추적 하면 된다.설명을 위해 이전 포스팅에서 사용한 그림을 그대로 가져왔다.아래 예제의 경우에는 마지막 값인 가치의 최댓값이 14이다.즉, 선택된 물건을 찾기 위해서는 14를 만든 물건을 역추적 하면 된다. 무게가 7일 때, 최댓값이 14이므로, ..
먼저, 많은 알고리즘 중 배낭 문제를 꼽은 이유는 다음과 같다... 최근에 응시한 코테에 나왔는데 풀지 못했다. 문제를 보자마자 배낭 문제라는 것을 알았고, 심지어 DP 문제라는 것도 알았다. 하지만 1차원 배열을 써야 하는지, 2차원 배열을 써야하는지 상세한 풀이 방법이 생각나지 않았다.대충, 점화식의 형태도 기억이 났지만, 결과적으로는 풀지 못했다. 그래서 다시 한 번 공부를 하면서, 다음 번에는 꼭 한 번에 풀 수 있도록 하고자 한다. 🔍 배낭 문제란?배낭 문제는 유한한 용량을 가진 배낭과 여러 개의 물건들이 주어졌을 때, 배낭에 담을 수 있는 물건들의 조합을 찾아 그 가치의 합이 최대가 되도록 하는 문제이다. 각 물건은 고유한 가치와 무게를 가지며, 물건을 쪼개서 넣을 수 없다는 제약(0-1 ..
해당 글에서는 가장 큰 수 문제를 Python을 이용해 풀이하고자 한다. 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 🔷 문제 설명 🔷 문제 풀이1️⃣ Python 풀이문제 자체는 간단하나, 풀이 방법이 신박해서 글을 작성하게 됐다.처음엔 문제를 보고, 문자열을 내림차순으로 정렬하면 될까 싶었지만 그렇게 하면 문제에서 의도한 것과 같이 정렬이 되지 않는다.[3, 30, 34]를 문자열 내림차순 정렬시 [34, 30, 3]이 된다.문제에 따르면 [34, 3, 30]이 되어야 한다. 그렇다면, 위에서 3이 30보다 ..