본문 바로가기

분류 전체보기

(341)
[프로그래머스 코딩테스트 연습] 완전 탐색 1. 모의고사 완전탐색 Exhaustive Search 1. 모의고사 문제 설명 수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는 방식: 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, ... 2번 수포자가 찍는 방식: 2, 1, 2, 3, 2, 4, 2, 5, 2, 1, 2, 3, 2, 4, 2, 5, ... 3번 수포자가 찍는 방식: 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, ... 1번 문제부터 마지막 문제까지의 정답이 순서대로 들은 배열 answers가 주어졌을 때, 가장 많은 문제를 맞힌 사람이 누구인지 배..
완전 탐색 Exhaustive Search 이번 글에서는 완전 탐색에 대한 내용을 다루겠습니다. 프로그래머스에서 코딩 테스트 연습에 완전 탐색 카테고리가 있는데 문제를 풀기 전에 개념을 확실히 짚고 넘어가는게 좋을 것 같아 정리했습니다. 재귀함수 Recursion Function 완전 탐색 알고리즘에서는 재귀 함수가 주로 사용되기 때문에 먼저 알아보았습니다. 재귀란, 컴퓨터 과학에서 자기 자신을 재참조하는 방법을 의미합니다. 재귀 함수는 함수 내에서 자기 자신을 다시 호출하는 함수를 말합니다. 즉, 자신이 수행할 작업이 일정한 패턴을 가지고 반복된다면, 패턴의 한 조각을 수행하는 함수를 만들고, 그 함수가 다시 자기 자신을 호출해서 해당 함수를 반복 실행할 수 있도록 하는 것입니다. base case 그렇다면 이렇게 무한히 자기 자신을 호출하는 ..
[Django] 튜토리얼 Cheating Sheet 지금은 nodejs + React로 프론트엔드 개발을 주로 하고 있지만 이전에 Django 프레임워크를 사용하여 웹 개발을 한 적이 있었습니다. 처음 Django 프레임워크를 사용할 때 일단 튜토리얼을 따라하면서 시작했는데 그때 제가 참고하려고 만든 Cheating Sheet 입니다. 프레임워크가 완전히 익숙해지기 전에 초기 개발 환경 설정시 참고하기 좋은 아~주 기본적인 내용입니다. :) Django #1 환경설정 1) Vs code를 실행해서 프로젝트를 위해 만든 폴더를 열어준다. or ('code .' command in cmd ) 2) 가상환경 실행: $ source myvenv/Scripts/activate - 항상 myvenv(가상환경이름)이 있는 폴더 위치에서 실행 명령 ** 가상환경 설치:..
[프로그래머스 코딩 테스트 연습] 정렬 1. K번째수 정렬 1. K번째수 문제 설명 배열 array의 i번째 숫자부터 j번째 숫자까지 자르고 정렬했을 때, k번째에 있는 수를 구하려 합니다. 예를 들어 array가 [1, 5, 2, 6, 3, 7, 4], i = 2, j = 5, k = 3이라면 array의 2번째부터 5번째까지 자르면 [5, 2, 6, 3]입니다. 1에서 나온 배열을 정렬하면 [2, 3, 5, 6]입니다. 2에서 나온 배열의 3번째 숫자는 5입니다. 배열 array, [i, j, k]를 원소로 가진 2차원 배열 commands가 매개변수로 주어질 때, commands의 모든 원소에 대해 앞서 설명한 연산을 적용했을 때 나온 결과를 배열에 담아 return 하도록 solution 함수를 작성해주세요. 제한사항 array의 길이는 1 이상 1..
React) Localstorage를 활용하여 React 로그인 정보 유지하기 아래 블로그를 참고하여 데모 사이트에 간단한 로그인 기능을 구현하였습니다. 코드에 static하게 저장되어 있는 사용자의 이메일과 패스워드 정보가 일치하고, 로그인 형식이 올바르면 setUser를 통해 초기값이 null 이던 user 변수에 정보를 주고, 이 user 값이 null이 아니라면 authenticated 값을 true로 바꿔줍니다. authenticated 값이 true로 전달되면 로그인 정보가 필요한 컴포넌트들이 랜더링 될 수 있는 것이죠. React Router로 사용자 인증하기 (로그인/로그아웃) Engineering Blog by Dale Seo www.daleseo.com LocalStorage 활용하여 인증 정보 저장하기 제 데모 사이트의 경우 처음 로그인 페이지를 랜딩 페이지로 ..
React Hook useEffect has a missing dependency: 'xxx'. Either include it or remove the dependency array. (react-hooks/exhaustive-deps) 해결하기 API로 서버에서 데이터를 받아오기 위해 react-hook 중 useEffect를 사용했습니다. 여러 개의 데이터를 받아와서 여러 개의 데이터를 setState를 해야 했습니다. 그런데 일부 useEffect 외부에서 선언된 데이터를 사용하여 axios.get을 해야 하는 경우, 해당 컴포넌트 호출시 바로 렌더링 되지 않고, 새로고침을 한번 더 해야 랜더링 되는 문제가 발생했습니다. 처음에는 이런 문제점을 파악하지 못하고 그냥 서버 속도가 느린 줄만 알았습니다 ㅠㅠ 그러다 콘솔 에러들을 해결하던 중 exhaustive-deps 문제를 해결하니 위 문제가 해결됐습니다. 아래 블로그를 참고하였는데 이 블로그에서는 이 문제를 해결할 수 있는 방법으로 2가지를 제시하는데 제 문제는 이 중 1번 해결 방법을 통..
정렬 알고리즘 (3) : 합병 정렬, 퀵 정렬 지난 시간에 이어 이번 글에서도 정렬 알고리즘에 대해 이어 설명하겠습니다. 이번 글에서는 합병 정렬과 퀵 정렬에 대해 소개하겠습니다. 합병 정렬 Merge Sort 합병 정렬의 개념 합병 정렬은 분할 정복 (Divide and Conquer) 방식으로 큰 문제를 반으로 쪼개가며 작은 문제로 만든 후, 작은 문제를 해결한 결과를 합쳐 전체를 정렬하는 방식의 알고리즘 입니다. 여기서 등장하는 분할 정복이라는 개념을 아주 중요한 개념이기 때문에 다음 번에 하나의 큰 주제로 자세히 설명하도록 하겠습니다. 합병 정렬의 기본 로직 합병 정렬은 크게 분할과 합병 과정으로 이루어집니다. 분할 Divide 현재 배열의 ( 시작 인덱스 + 종료 인덱스 ) / 2 한 값을 기준으로 현재 배열을 받으로 쪼갠다. 쪼갠 배열의 ..
정렬 알고리즘 (2) : 삽입 정렬, 버블 정렬 지난 시간에 이어 이번 글에서도 정렬 알고리즘에 대해 이어 설명하겠습니다. 이번 글에서는 삽입 정렬과 버블 정렬에 대해 소개하겠습니다. 삽입 정렬 Insertion Sort 삽입 정렬의 개념 삽입 정렬은 현재 인덱스와 해당 인덱스보다 작은(왼쪽) 인덱스에 있는 원소들을 비교하여 자신이 들어갈 위치를 찾아 삽입하는 정렬 알고리즘 입니다. 삽입 정렬의 기본 로직 0번째 인덱스는 가장 왼쪽에 위치해 있기 때문에 비교 대상이 없으므로 삽입 정렬은 1번재 인덱스부터 시작합니다. 삽입할 대상이 되는 현재 인덱스는 별도의 변수에 저장해 두고, 현재 인덱스에서 -1 한 인덱스의 원소들을 비교합니다. 현재 인덱스의 원소 값이 비교 인덱스의 원소 값보다 큰 원소를 만날때까지 비교 인덱스를 -1 씩 해주며 왼쪽으로 이동합니..