끄적끄적 코딩
article thumbnail
[Java] 백준 2310번 어드벤처 게임
알고리즘 2023. 7. 1. 03:21

입구(1)에서 목적지(N)까지 이동할 수 있는지 찾는 문제입니다. BFS를 사용해서 탐색했습니다. 갈 수 있는 방향으로 모두 이동하며 visit배열을 두어서 이전보다 나은 상황에만 중복된 이동을 허용해 주었습니다. 신경 쓴 사항으로는 하나의 케이스가 끝났을 때 변수 값 초기화 해주기 visit배열을 int로 받아서 이전보다 돈을 많이 가진 경우에만 탐색할 수 있게 해주기 import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.util.ArrayList; import java.util.LinkedList; i..

article thumbnail
[React] Context API
React 2023. 6. 30. 05:02

Context API는 리액트 프로젝트에서 전역적으로 사용할 데이터가 있을 때 유용하다. ex) 사용자 로그인 정보, 애플리케이션 환경 설정, 테마 등 Context API는 리액트 관련 라이브러리에서도 많이 사용되고 있다. ex) 리덕스, 리액트 라우터, styled components 등은 모두 context api를 기반으로 구현된 것이다. Context API를 사용한 전역 상태 관리 흐름 이해하기 일반적인 전역 상태 관리 흐름 최상위 컴포넌트인 App의 state에 넣어서 관리한다. 문제점 : 다루어야 하는 데이터의 중복값이 늘어나므로 유지보수성이 낮아질 가능성이 있다. 리액트 v16.3 업데이트 이후에는 Context API가 많이 개선되었기 때문에 별도의 라이브러리를 사용하지 않아도 전역 상..

article thumbnail
[Java] 백준 1043번 거짓말
알고리즘 2023. 6. 30. 04:54

집합 문제입니다. N명의 사람과 M개의 파티가 있을 때 지민이가 과장된 말을 할 수 있는 수를 구해야합니다. 매번 파티에서 사람들을 집합으로 묶어줍니다. 해당 파티에 진실을 아는사람이 있는지 확인합니다. M번의 파티를 탐색해서 진실을 아는 사람이 속한 집합인지 확인하고 속하지 않은 경우 결과값에 1을 더해주었습니다. import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.util.StringTokenizer; import java.util.Arrays; public class Main { public sta..

article thumbnail
[Java] 백준 2225번 합분해
알고리즘 2023. 6. 29. 00:55

다이나믹 프로그래밍 문제입니다. N을 K개의 수로 만드는 경우의 수를 구해야 합니다. 수는 1~N이 있고 중복해서 사용할 수 있습니다. 2차원 DP배열을 만들어줍니다. dp[K개][N값] dp배열에는 a개의 개수가 있을때 b값을 만들 때 경우의 수를 저장합니다. for (int i = 2; i

article thumbnail
[React] 리액트 컴포넌트에서 API를 연동
React 2023. 6. 28. 03:59

비동기 작업의 이해 동기 vs 비동기 동기(synchronous) - 동기는 데이터의 요청과 결과가 한 자리에서 동시에 일어나는것을 말함 - 요청을 하면 시간이 얼마나 걸리던지 요청한 자리에서 결과가 주어져야 함 비동기(Asynchronous) - 비동기는 동시에 일어나지 않음 - 요청한 결과는 동시에 일어나지 않을 것이라는 약속 동기와 비동기의 장단점 동기 장점 : 설계가 매우 간단하고 직관적 단점 : 결과가 주어질 때까지 아무것도 못하고 대기해야함 비동기 장점 : 요청에 따른 결과가 반환되는 시간 동안 다른 작업을 수행할 수 있음 (자원을 효율적으로 사용 가능) 단점 : 동기식보다 설계가 복잡 웹 애플리케이션을 만들다 보면 처리할 때 시간이 걸리는 작업이 있다. ( 예 : 서버쪽 데이터가 필요해 Aj..

[React] immer
React 2023. 6. 28. 03:49

const object = { somewhere: { deep: { inside: 3 ... } ... } ... } // inside값 변경 const nextObject = { ...object, somewhere: { ...object.somewhere, deep: { ...object.somewhere.deep, inside: 4 } } } 위 처럼 객체의 구조가 깊어지면 불변성을 유지하면서 이를 업데이트하는 것이 매우 힘듭니다. 이렇게 구조가 복잡한 객체도 매우 쉽고 짧은 코드를 사용하여 불변성을 유지하면서 업데이트해 줄 수 있습니다. immer를 설치하고 사용법 알아보기 프로젝트 준비 $ yarn create react-app immer-tutorial $ cd immer-tutorial $ ..

article thumbnail
[Java] 백준 5639번 이진 검색 트리
알고리즘 2023. 6. 28. 03:47

트리 문제입니다. 노드 클래스를 생성합니다. static public class Node { Node left; Node right; int value; public Node(int value) { this.value = value; } 노드 클래스는 왼쪽 노드와 오른쪽 노드, 현재 값을 가집니다. 노드 클래스에 자식을 붙이는 함수를 추가해 주었습니다. public void makeChild(int num) { if (num < value) { if (this.left != null) { this.left.makeChild(num); } else { this.left = new Node(num); } } else { if (this.right != null) { this.right.makeChild(nu..

article thumbnail
[React] 컴포넌트 스타일링
React 2023. 6. 27. 01:58

많은 데이터 렌더링하기 아래의 코드를 작성하여 랙(lag)경험할 수 있도록 많은 데이터를 렌더링해봅시다. function createBulkTodos() { const array = []; for (let i = 1; i { const [todos, setTodos] = useState(createBulkTodos); const nextId = useRef(2501); (...) }; 이 때, 해당 코드에서 주의할 점은 useState의 기본값에 함수를 넣어 주었다는 것입니다.useState(createBulkTodos)라 작성하면 컴포넌트가 처음 렌더링될 때만 함수가 실행됩니다. useState(createBulkTodos())라 작성하면 리렌더링될 때마다 함수가 호출되지만 useState(create..

검색 태그