목록자료구조 (97)
개발자는 기록이 답이다
알고리즘 할때 ArrayList를 자주 썼는데, 내부적으로는 어떻게 동작하는지 알아보기 위해 해당 포스팅을 작성해보려고 한다. ArrayList란? Java의 동적 배열인 ArrayList는 내부적으로 배열을 기반으로 하는 자료 구조이다. 크기를 동적으로 조절 가능하여 원소의 추가와 삭제가 용이하며, 랜덤 액세스에 강점을 가지고 있다. 중간에 원소를 추가하거나 삭제할 때는 다른 원소들을 이동시켜야 하므로 성능 저하가 있을 수 있다. 크기 조절은 현재 크기의 1.5 배로 확장하는 방식을 사용한다. 특히 동적인 데이터 크기 및 빈번한 원소 조작이 필요한 상황에서 적합한 자료구조이다. ArrayList의 동적 크기 확장의 메커니즘 ArrayList의 동적 크기 확장은 내부적으로 배열을 사용하며, 배열이 가득 ..
7. 조합의 경우수(메모이제이션) 예시 입력 1 5 3 예시 출력 1 10 예시 입력 2 33 19 예시 출력 2 818809200 강의 풀이(Time: 153ms Memory: 27MB) 먼저 nCr에 대해 이해보자 nCr : n개 중에 r개를 뽑는다는 의미이다 종이에는 지우고 썼다가 불편해서 블랙보드로 샀더니 비치는건 양해부탁드립니다.. {1,2,3,4,5}라는 배열처럼 5명의 학생이 있는데, 5번 학생을 뽑을 경우와 안뽑을 경우로 DFS를 접근하면 된다 아래처럼만 해도 nCr을 구할 수 있긴하지만, 입력값이 크다면 재귀를 많이 뻗기 때문에 오래 걸릴 것이다. 그래서 메모이제이션이 필요하다 // 메모이제이션 X import java.util.Scanner; public class Main { publ..
https://school.programmers.co.kr/learn/courses/30/lessons/42840 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr import java.util.*; public class Solution { public int[] solution(int[] answers) { int[] first = {1,2,3,4,5}; // 5개씩 반복 int[] second = {2,1,2,3,2,4,2,5}; // 8개씩 반복 int[] third = {3,3,1,1,2,2,4,4,5,5}; // 10개씩 반복 int answer1..
https://school.programmers.co.kr/learn/courses/30/lessons/86491 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 사고력의 문제이다. 문제에서 설명하는 것처럼 최대값을 찾아서 분기처리로 가로 세로 바꿔주려고 했으면 엄청 오래 걸릴 것 같다 가로, 세로의 최대값, 최소값을 구하고 그 최대값과 최소값의 최대값을 구하면 빠르게 풀린다. public class Solution { public int solution(int[][] sizes) { int hMax = Integer.MIN_VALUE; // 수평 int ..