[알고리즘] DP(Dynamic Programming) 동적 계획법 이해하기
·
Knowledge/알고리즘
동적 계획법 Dynamic ProgrammingDP라고 불리는 동적 계획법은 이름대로 동적인 알고리즘이 아니다. 이름과 관련이 없으니 DP는 그냥 외워야 한다. DP는 큰 문제를 작은 문제로 나누어 재사용하는 방법을 사용한다.여기서 포인트는 '작은 것으로 나눈다'가 아니라 '재사용한다'를 주목해야 한다. 알고리즘을 처음 공부할 때는 DP에 대해 정확히 이해하지 못했다. 작은 문제로 나눈다는 것에만 집중해 분할정복법(Divide&Conquer)과 비슷한 방법이구나 라고만 알고있었다. 하지만 분할정복과 접근 방식만 같을 뿐, 계산 결과를 재사용한다는 점에서 큰 차이점이 있다.  분할 정복 Divide and Conquer말 그대로 주어진 문제를 분할하여 작은 문제로 나누고, 작은 문제부터 해결해 병합하여 전..
[JAVA] 깊은 복사와 얕은 복사 코드로 직접 확인하기 -python과 비교
·
Language/JAVA
얕은 복사대입 연산자를 통해 복사하는 방법으로 새로운 메모리에 같은 값이 복사되는 것이 아닌, 같은 메모리를 공유하는 주소값을 복사하는 것을 얕은 복사라고 한다. 이 경우 같은 메모리를 공유하고 있기 때문에 복사한 두번째 변수 값을 변경하면 처음 변수 값도 같이 변경된다. 깊은 복사새로운 메모리를 만들어 똑같이 생성하는 것으로 보기에는 같지만, 서로 다른 메모리를 가지고 있다.실제 값을 하나씩 꺼내서 복사하거나, 메서드를 이용해 복사하는 방법이 있다.  깊은 복사와 얕은 복사는 말 그대로 얼마나 깊이있게 복사할 수 있는지를 말한다. 이 경우 설명보다 코드를 통해서 변화하는 모습과 주소값을 직접 확인하는게 제일 이해하기 좋았다.    코드로 확인 ArrayList a = new ArrayList(Array..
[프로그래머스] 이상한 문자 만들기 - python
·
CodingTest/programmers
문제 설명문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수, solution을 완성하세요.  제한 사항문자열 전체의 짝/홀수 인덱스가 아니라, 단어(공백을 기준)별로 짝/홀수 인덱스를 판단해야합니다.첫 번째 글자는 0번째 인덱스로 보아 짝수번째 알파벳으로 처리해야 합니다.  입출력 예s return"try hello world""TrY HeLlO WoRlD"  입출력 예 설명"try hello world"는 세 단어 "try", "hello", "world"로 구성되어 있습니다. 각 단어의 짝수번째 문자를 대문자로, 홀수번째 문자를 소문자로 바꾸면 "Tr..