일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 |
- 백준 1240번 노드사이의 거리
- 백준 8979번 올림픽 S5 자바
- 프로그래머스
- Java
- map
- 프로그래머스 java
- Stack
- 포인트 컷
- HashMap
- append
- 백준 2206번 벽 부수고 이동하기 G3
- StringBuilder
- 코틀린기초
- 백준 1967번 트리의 지름 G4 자바
- 서브모듈 yml
- StringTokenizer
- 프로그래머스 자바
- 스프링 다중프로필
- 백준 1600번 말이 되고픈 원숭이
- toUpperCase
- HashSet
- 스프링 on-profile
- dp
- 백준 2660번 회장뽑기 G5
- 백준 2589번 보물섬 G5
- kotlin
- 백준 11725번 트리의 부모 찾기
- 전위 중위 후위
- replace()
- hash
- Today
- Total
목록분류 전체보기 (140)
말하는 컴공감자의 텃밭
하필 또 술먹고 풀어서 머리가 많이 안굴러가 고생한 문제다. 가장 많은 빌딩을 볼 수 있을때 몇개나 볼 수 있는지 구하는 문제이다. 처음에는 어떤 기준으로 보이려나 감이 안잡혀서 그림으로 표현해서 해결했다. 답은 기울기 였다. 현재 내가 있는 빌딩에서 바라보려는 빌딩의 사이가 막혀있다면 볼 수 없으니 기울기를 통해 이를 판단했다. 기울기 판단은 (현재 높이 - 판단할 빌딩 높이) / (현재 위치 idx - 판단할 빌딩 idx) 로 해주었다. 위 계산 방식으로 판단하면 왼쪽의 경우 기울기가 기준보다 크다면 볼 수 없고, 오른쪽의 경우 기울기가 기존보다 작다면 안보일것이다. 먼저 노랑색 포인트를 기준으로 예시를 들겠다. 현재 7높이의 위치하고 있고, idx는 12번이다. 양쪽은 언제나 확인할 수 있으며 그 ..
처음엔 이게 뭐지 감을 못잡았다. 무슨말이래 파일은 바로 옆에있는것만 합칠 수 있고, 순서에 따라 합이 달라지는데 우리는 최소값을 구해주면 된다. 누적합 문제죠~?~ 범위를 2차원 배열로 정해서 DP로 범위를 나눠주기로 했다. 위 예제만 봐도 알겠지만 연산이 가장 적은게 훌륭하다. 최종 값은 결국 두 덩이를 합치는것이다. 하나를 A 하나를 B로 정한다면 합쳐진 A와 합쳐진 B가 더해져서 값을 구하는것 이므로 범위를 정하고, Mid를 조정해서 최소값을 찾아주면 되겠다. 범위를 늘려나가면서 저장해 준다. range 변수를 1부터 증가시켜 N 까지 더한 값으로 올라가고, start와 end 변수로 인덱스를 할당한다. 범위의 최소값을 구하고, 누적합을 통해 중간 연산을 더해준다. -> 누적합은 end에서 sta..
Clone 인스턴스가 스스로를 복사하기 위해 사용. Cloneable 인터페이스 구현 권장. 깊은 복사는 직접 오버라이드하여 구현해야 함. 👀 얕은 복사와 깊은 복사가 존재하는데 간단하게 설명 후 예시를 통해 코드로 확인해보자. 얕은 복사는 객체의 필드 값을 새 객체로 복사하는 과정에서, 기본 타입의 필드는 그 값이 직접 복사되지만, 참조 타입의 필드는 메모리 주소(참조)만 복사된다. 이는 참조 타입의 필드가 가리키는 객체는 복사되지 않고, 원본 객체와 복사된 객체가 같은 객체를 참조하게 된다. 결과적으로, 얕은 복사를 통해 생성된 객체에서 참조 타입의 필드를 수정하면, 그 변경사항이 원본 객체에도 영향을 미친다. 두 객체가 동일한 참조 타입의 인스턴스를 공유하기 때문이다. 깊은 복사는 객체를 복사할 때..
Redux ? JavaScript 앱에서 상태 관리를 위한 자바스크립트 라이브러리이다. UI 라이브러리/프레임워크와 함께 사용될 때 매우 유용하며, 애플리케이션의 상태(state)를 예측 가능한 방식으로 관리할 수 있다. 여기서 "상태"란 앱에서 관리해야 하는 모든 데이터를 말한다. 자바 스크립트는 Props랑 State로 컴포넌트 안에서 데이터를 교환하고, 통신하는 두 용어를 정리해보자. Props (속성): 부모 컴포넌트로부터 자식 컴포넌트에게 전달되는 데이터이다. Props는 컴포넌트가 받는 입력과 같으며, 컴포넌트 내에서 변경할 수 없다. 컴포넌트를 재사용하고 구성할 수 있는 방식이다. 값을 변경하고자해도 자식에서 변경은 불가능하며 부모의 내부를 변경해야 한다. State (상태): 컴포넌트가 관..
TDD - Test-Driven Development : 테스트 주도 개발 원하는 테스트 코드를 작성하고 실행 여부를 확인하여 실제코드를 작성하는것을 말한다. TDD 장점 버그 감지: 테스트를 먼저 작성하면 개발 프로세스 초기에 기능 문제를 식별 가능. 디자인 : 개발자는 코드를 작성하기 전에 디자인을 충분히 생각해야 하기 때문에 더 모듈화되고 유연하며 확장 가능한 코드로 작성가능. 문서화: 테스트는 코드베이스에 대한 문서 형식으로 사용되며 시스템이 어떻게 작동하는지 확인 가능. 리팩토링: 테스트를 진행하면서 의도하지 않은 동작 변경 사항에 대한 코드를 리팩터링할 수 있다. React Testing Library : 행동 중심 테스트 React Testing Library 목적: React Testing..
Memoization 비용이 많이 드는 함수 호출의 결과를 저장하고, 동일한 입력이 발생할 때 캐시된 결과를 반환해서 효율을 높히는 방식이다. 알고리즘할때 DP[] 가 여기에 해당한다. useMemo 이 후크는 종속성 중 하나가 변경된 경우에만 메모된 값을 다시 계산하는 특징을 갖고 있어 최적화에 효과적이다. 모든 랜더링에서 비용이 많이 드는 계산을 방지하는데 사용된다. //사용법 const memoizedValue = useMemo(() => computeExpensiveValue(a, b), [a, b]); a와 b가 변경되지 않는 한 후속 랜더링에서 함수를 호출하는 대신 메모된 값을 사용하게 된다. Props를 통해 많은 계산이 요구될때 useMemo를 사용하게 된다. import React, { ..
자바스크립트 타입에서 원시타입은 불변성을 가지고 있고, 참조 타입은 가지고 있지 않다. 이 둘을 비교하며 확인하고 예제를 통해 정리해보자 원시타입 호출 스택에 직접 저장되는 타입. 호출 스택은 코드가 실행될 때 변수와 해당 값을 저장하는 메모리의 일부이다. undefine, null, boolean, number, string, bigint, symbol 이 해당. 불변성을 가지고 있다는 것은 이 타입들의 값을 변경하면 실제 메모리에서 새 값이 생성됨을 말한다. 그렇기에 원래 값은 변경되지 않아 불변한다. 라고 표현한다. 참조 타입 객체, 배열, 함수가 해당 힙에 저장되며, 복잡한 데이터에 사용되는 더 큰 메모리 공간입다. 호출 스택은 실제 데이터가 저장되는 힙 위치에 대한 참조(또는 포인터)를 저장한다..
문제가 너무 간단해 보였는데.. 진짜 한참 한참 걸린 문제다. 열받으면서 풀었는데 까먹을까봐 까먹을랑 말랑할때 정리한다. 먼저 지름길 갯수와, 거리가 주어진다. 지름길은 시작점과 끝점, 소모되는 시간이 주어지고 지름길이 오히려 더 길게되는 경우도 존재한다. 또한 고속도로이므로 역주행은 불가능하다. 150이 도착지점이면 정확히 150이어야 한다. 일반 고속도로의 경우 1당 1의 거리를 지닌다. 최솟값을 찾아야 하므로 효율이 좋은 지름길을 활용해서 도착점에 도달하면 되겠다. 초기에 이차원 배열을 통해 DP로 해결하려 접근했었다. 지름길을 통하면 이전에 대한 값과 비교해서 업데이트하고, 다시 그 이후의 길을 업데이트 하는식으로 말이다. 예제는 전부 옳게되었으나 문제가 발생했다. 지름길이 겹치는 경우였다. 로직..
State와 Props ? - State 부모 컴포넌트에서 자녀 컴포터는로 데이터를 보내는게 아니라 해당 컴포넌트 내부에서 데이터를 전달하고자 할때 사용. ex) 검색창에서 글을 입력할때 글이 변하는것은 state를 변경시킨다. State는 변경가능하다. State가 변하면 re-render된다. state = { message : '', attachFile : undefined, openMenu : false, }; - Props 프로퍼티 Properties의 줄임말로 상속하는 부모 컴포넌트로부터 자녀 컴포넌트에 데이터 등을 전달하는 방법이다. 읽기 전용으로 자녀 컴포넌트에서는 변하지 않는다. 변경하고자 한다면 부모 컴포넌트에서 state를 변경시켜주어야 한다. A 부모 컴포넌트 state = { A ..