자바 자료구조 - List 인터페이스_(2)ArrayList 직접 구현
·
자료구조
서론 ❓ArrayList를 공부한 이후 내부 함수가 어떠한 방식으로 작동하는지 궁금하고, List인터페이스에 대해 깊이있게 공부하기 위해 아래 블로그 글을 따라 ArrayList 내부 함수를 재정의 하며 공부한 내용을 이 포스팅에 정리하며 더욱 깊이있게 이해하고자 했다. 🛠️ ArrayList 자료구조 실전 구현 강의 (JAVA)ArrayList 자료구조 ArrayList 특징으론 다음과 같이 요약이 가능하다. 연속적인 데이터의 리스트 (데이터는 연속적으로 적재 되있어야 하며 중간에 빈공간이 있으면 안된다) ArrayList 클래스는 내부적inpa.tistory.com아직 ArrayList에대해서 모른다면? 🤷‍♂️이전 게시물 보러 가기 자바 자료구조 - List 인터페이스_(1)ArrayListAr..
[이것이 취업을 위한 코딩 테스트다] 다이나믹 프로그래밍(Dynamic Programming)-(6) 정수 삼각형 ([백준] 1932번 : 정수 삼각형)- 자바(java)
·
알고리즘/다이나믹 프로그래밍((Dynamic Programming)
문제문제 풀기 :   https://www.acmicpc.net/problem/1932해설1. numTriengle과 dp 이중배열에 공간복잡도를 효율적으로 사용하기 위해 각각의 층에 맞는 배열크기를 할당한다.2. numTriengle배열에 입력 받은 값을 할당한다.3. dp배열에는 현재 인덱스까지 최대값을 넣어준다.3-1. 이때 고려해야할 사항은 가장 왼쪽에 위치한 인덱스인 경우 오직 자신의 오른쪽 위 대각선에서만 값이 온다.3-2. 가장 오른쪽에 위치한 인덱스인 경우 오직 자신의 왼쪽 위 대각선에서만 값이 온다.3-3. 중간에 위치한 인덱스의 경우 왼쪽 위 대각선과 오른쪽 위 대각선의 값을 비교하여 더 큰값을 받는다.4. 마지막 줄에 위치한 dp배열의 값들중 최대값을 max변수에 할당한 후 출력한다...
[이것이 취업을 위한 코딩 테스트다] 다이나믹 프로그래밍(Dynamic Programming)-(5) 병사 배치하기 ([백준] 18353번 : 병사 배치하기)- 자바(java)
·
알고리즘/다이나믹 프로그래밍((Dynamic Programming)
문제문제 풀기 :  https://www.acmicpc.net/problem/18353해설1. 잘못된 접근처음 문제를 보고서 남아있는 병사들의 전투력의 총합이 가장 크게 만드는 문제로 이해했다.문제 이해 자체가 잘못되어 올바른 코드를 산출하지 못했다.와중에 올바른 코드를 산출하지 못해 혼자 계속 고민하다 코드를 다 지우고 문제를 다시 읽었다...import java.io.BufferedReader;import java.io.InputStreamReader;import java.io.IOException;import java.util.StringTokenizer;public class Main { public static void main(String args[]) throws IOException { ..
[이것이 취업을 위한 코딩 테스트다] 다이나믹 프로그래밍(Dynamic Programming)-(4) 못생긴 수
·
알고리즘/다이나믹 프로그래밍((Dynamic Programming)
문제못생긴 수란 오직 2, 3, 5 만을 소인수로 가지는 수를 의미한다.다시 말해 오직 2, 3, 5를 약수로 가지는 합성수를 의미한다.12의 약수인 1, 2, 3, 4, 6, 12 중에서 2와 3이 소인수이다.1은 못생긴 수라고 가정한다.따라서 못생긴 수들은 {1, 2, 3, 4, 5, 6, 8, 9, 10, 12, 15, ... } 순으로 이어지게 된다.이 때, n번째 못생긴 수를 찾는 프로그램을 작성해라.예를 들어 11번째 못생긴 수는 15이다.입ㆍ출력 조건입력 조건첫째 줄에 n이 입력된다.(1 출력 조건n번째 못생긴 수를 출력한다.입ㆍ출력 예시입력 예시10출력 예시12해설접근방법문제를 처음 봤을때는 그냥 모든 경우의 2,3,5를 다 곱해서 배열에 넣고 정렬해야겠다는 생각을 했다.하지만 1000번째..
[이것이 취업을 위한 코딩 테스트다] 다이나믹 프로그래밍(Dynamic Programming)-(3) 퇴사 ([백준] 14501번 : 퇴사)- 자바(java)
·
알고리즘/다이나믹 프로그래밍((Dynamic Programming)
서론다이나믹 프로그래밍이라는 알고리즘 기법에 대해서 깊이있게 공부하던 중에 문제를 많이 풀어보면 습득하기 좋을거 같아. 이것이 취업을 위한 코딩 테스트다 with 파이썬-(동빈나)에 나오는 다이나믹 프로그래밍 문제를 풀어보며 공부하면 좋을거 같아 문제를 풀어보고 푸는 과정을 기록으로 남긴다.문제 문제 풀기 : https://www.acmicpc.net/problem/1904해설접근 방식기존에 풀었던 다이나믹 프로그래밍과 약간은 다른 방식이라 생소하게 다가와 처음에는 많이 당황스러웠다.계속 입력예시를 직접 손으로 적으며 고민하던중에 "작업이 끝나는 시간"에 집중해야 한다는 것을 깨달았다.1. 먼저 입력을 받는다.2. 입력 받은 값을 기준으로 각각의 작업이 시작하는 날과 끝나는 날을 같이 저장한다.3. 버블..
[이것이 취업을 위한 코딩 테스트다] 다이나믹 프로그래밍(Dynamic Programming)-(1)
·
알고리즘/다이나믹 프로그래밍((Dynamic Programming)
서론최근 다이나믹 프로그래밍이라는 알고리즘 기법에 대해서 깊이있게 공부하던 중에 문제를 많이 풀어보면 습득하기 좋을거 같아. 이것이 취업을 위한 코딩 테스트다 with 파이썬-(동빈나)에 나오는 다이나믹 프로그래밍 문제를 풀어보며 공부하면 좋을거 같아 문제를 풀어보고 푸는 과정을 기록으로 남긴다.1. 1로 만들기 문제문제 접근 전략동적 프로그래밍의 전형적인 최적화 문제각 숫자마다 최소 연산 횟수를 저장하는 메모이제이션 필요Bottom-Up 방식으로 접근 가능모든 가능한 연산 중 최소 연산 선택중복 계산 방지를 위한 DP 테이블 활용연산의 우선순위와 최적성 보장문제 해결 핵심 로직1을 뺀 경우와 2, 3으로 나눈 경우 비교각 숫자별 최소 연산 횟수 누적 계산import java.io.BufferedRead..
[백준] 1904번 : 01타일 - 자바(java)
·
알고리즘/다이나믹 프로그래밍((Dynamic Programming)
문제 풀기 : https://www.acmicpc.net/problem/1904문제 분석지원이가 만들 수 있는 길이 N의 2진 수열의 개수를 구해야 합니다. 이때 타일은 다음 규칙을 따릅니다:'1'로만 이루어진 타일'00'로 이루어진 타일이 규칙으로 인해 2진 수열은 특정한 방식으로만 조합될 수 있습니다. 예를 들어:N=1 : 1개(1)N=2 : 2개(00, 11)N=3 : 3개(001, 100, 111)N=4 : 5개(0000, 0011, 1001, 1100, 1111)N=5 : 8개 (11111 10000 00100 00001 11100 11001 10011 00111)N=6 : 13개N=7 : 21개N= 8 : 34개N= 9 : 55개N= 10 : 89개잘못된 접근초기 접근: 조합을 통한 계산처음엔..