전체 글 126

프로그래머스 - 체육복 (Greedy)

🔸 문제 접근 방식 체육복 여벌은 자신 기준 앞, 뒤로만 빌려줄 수 있다는 건 유의 체육복 여벌이 있는데 도난 당한 경우를 먼저 고려할 것. 예외 처리 발생 💧 Source code def solution(n, lost, reserve): ''' 프로그래머스-체육복 문제 풀이 (Greedy) Notes: 1. 체육복 여벌은 자신 기준 앞, 뒤로만 빌려줄 수 있다는 것 주의 2. 체육복 여벌이 있는데 도난 당한 경우를 먼저 고려할 것. 예외 처리 발생 Args: n (int) : 학생 수 lost (list) : 체육복을 잃어버린 학생 번호를 담은 리스트 reserve (list) : 체육복 여벌을 가져온 학생 번호를 담은 리스트 Returns: answer (int) : 체육 수업에..

알고리즘 2021.06.20

프로그래머스 - H-index

🔸 문제 접근 방식 다음 방식으로 문제를 접근하였다. 논문이 인용될 최대값을 H-index로 설정한 뒤 1씩 감소시켜가며 H-index 조건을 확인한다. 인용될 최대값은 len(citations) H-index는 두 조건을 만족한다. H-index 회 이상 인용된 논문의 수가 H-index 이상이다. H-index 회 이하 인용된 논문의 수가 H-index 이하이다. H-index 의 최대값을 선택한다. 📌 문제 풀이 정렬 문제이기는 하나, H-index가 될 target값을 기준으로 citations을 분리했다. target값보다 크거나 같은 논문은 bigList에 추가 target값보다 작거나 같은 논문은 smallList에 추가 그리고 2 조건을 만족하면 H-index 그룹인 resultList에 ..

알고리즘 2021.06.17

프로그래머스 - 가장 큰 수 (정렬)

🔸 문제 해결 방향 문자열 처리를 통해 풀어야한다. 문자열 비교가 어떻기 이루어지는지 숙지할 것 문자열 곱셈을 수행한 뒤 비교한 이유는? 문자열 비교 → 숫자 변환 → 문자열 변환 후 반환 숫자로 바꾸어 주지 않을 시 발생하는 문제는? 문제 접근 리스트 정렬 기능 이용하기 처음 시도는 리스트 정렬 기능을 이용했다. 정렬 시 기준이 되는 key 값을 문자열의 첫 번째 값으로 설정했다. 첫째자리수가 가장 클 경우 앞 쪽에 배치된다. ❌ 첫째 자리 수가 같은 경우 발생 5와 50은 어떻게 비교할까? → 정렬 시 2번째 기준을 문자열 길이로 설정한다. 둘째 자리 수가 같을 경우 문자열 길이가 짧은 쪽이 앞에 배치된다. ❌ 그럼 5, 56, 3의 경우는 어떨까? → 정렬 시 2번째 기준 56, 5, 3이 되어야 ..

알고리즘 2021.06.16

그리디 문제풀이 - 볼링공 선택하기

🔸 볼링공 고르기 A,B 두 사람이 볼링공을 고를 수 있는 조합의 수를 구하는 문제이다. 볼링공 수는 N으로 최대 1,000 볼링공 무게는 M으로 최대 10 서로 같은 무게의 볼링공은 고를 수 없음 같은 무게의 공이 여러 개 존재할 수 있지만, 다른 공으로 간주 📌 예시 5 3 1 3 2 3 2 → 8가지 8 5 1 5 4 3 2 4 5 2 → 25가지 📌 초기 접근 방법 A가 첫 번째 공을 골랐다고 가정한다. 1을 골랐으므로, 나머지 공 중 1이 아닌 것의 개수를 구한다. 그 뒤 3을 골랐을 경우, 나머지 공 중 3이 아닌 것의 개수를 구한다. ... 위의 방식으로 첫 번째 공, 두 번째 공, 세 번째 공을 골랐을 때마다 뒤의 공 중 무게가 다른 공의 개수를 합해가며 최종 답을 구하였다. 📌 교재 접근..

알고리즘 2021.06.13

그리디 문제 풀이 - 만들 수 없는 금액

🔸 만들 수 없는 금액 동전 n개가 주어졌을 때, 해당 동전들로 만들 수 없는 금액을 구하여라. 동전은 최대 1000개, 각 동전의 크기는 최대 1,000,000원이다. ex) 1,2,3, 7원 동전이 주어졌을 때, 1원 : 1 2원 : 1 3원 : 3 4원 : 1+3 5원 : 2+3 6원 : 1+2+3 7원 : 7 8원 : 1+7 9원 : 2+7 10원 : 3+7 11원 : 1+3+7 12원 : 2+3+7 13원 : 1+2+3+7 14원 : X 📌 초기 접근 방법 처음에 생각한 접근 방식은 어려웠다. 동전의 모든 조합을 구한다. 조합 별 최종 합을 구한다. 최종 합을 set에 담는다. 여기서 문제는 모든 조합을 구할 때 너무 많은 비용이 든다. Combination 연산 시에는 팩토리얼 단위로 연산하기..

알고리즘 2021.06.12

그리디 알고리즘 개념 총 정리

🔸그리디 알고리즘 Greedy는 탐욕스럽다는 뜻으로 매 순간 최선의 선택을 수행함으로써 문제를 해결하는 방식입니다. 따라서 몇몇 예외를 제외하면 문제 유형이나 테크닉한 기술 없이도 풀 수 있는 문제입니다. 하지만, 문제를 접했을 때 해결할 수 있는 최소한의 아이디어는 떠올릴 수 있어야 해결이 가능하므로 문제풀이를 통해 감을 익힐 필요가 있는 유형이라고 볼 수 있습니다. 단, 다익스트라 알고리즘, 정렬 알고리즘과 함께 출제되는 경우 미리 숙지가 필요한 경우도 있습니다. 📌 정리 그리디 알고리즘을 해결하기 위해서는 다음 능력을 키울 필요가 있습니다. 매 번 최선의 선택만 수행해도 문제를 해결할 수 있는지를 파악해야 합니다. 문제를 해결하기 위한 최소한의 아이디어를 떠올릴 수 있어야 합니다. 명확한 문제 유형..

알고리즘 2021.06.01

코딩테스트 문제 풀이 전, 시/공간 복잡도 이해하기

🔸복잡도 코딩테스트를 준비하기 전, 시간 복잡도와 공간복잡도 이해하기 대부분의 코딩테스트 문제에는 제한 시간과 메모리가 존재합니다. 이를 바탕으로 적절한 시/공간 복잡도를 계산한 뒤 적절한 알고리즘을 사용할 필요성이 있습니다. 따라서 시간 복잡도와 공간복잡도에 대해 이번 기회에 정리하려고 합니다. 🔸시간복잡도 '제한시간'안에 알고리즘 문제를 해결하기 위해서는 시간복잡도를 이해해야 합니다. 일반적으로 O(N)과 같은 빅오 표기법을 기준으로 연산 횟수를 계산합니다. for 문으로 문제를 해결할 시 시간복잡도는 다음과 같습니다. 단일 for문: $O(N)$ 이중 for문: $O(N^2)$ 삼중 for문: $O(N^3)$ N값이 어떻게 주어지냐에 따라 시간복잡도를 계산해보겠습니다. N=500 N=500일 경우 ..

알고리즘 2021.05.31

파이썬 가상환경 설정하기

가상환경 설정하기 우선 가상환경 폴더를 생성합니다. mkdir venv 파이썬 가상 환경을 생성하는 명령어를 입력합니다. python -m venv myproject_venv python -m venv는 파이썬 모듈 중 venv라는 모듈을 사용한다는 의미입니다. 그 뒤 myproject_venv는 가상 환경의 이름에 해당합니다. 가상환경 진입하기 생성한 가상환경의 Scripts 폴더의 activate 파일을 실행합니다. cd myproject_venv/scripts activate 명령어 입력 가상환경을 나가려면 deactivate 명령어를 수행합니다. 장고 설치하기 pip install django==3.1.3 python -m pip install —upgrade pip django를 설치하고 pip..

Web/Django 2021.05.28

Django Mysql 연동하기

프로젝트 생성하기 PyCharm에서 File > New project 선택 해당 과정을 수행하면 가상환경까지 완료된 상태의 프로젝트가 생성됩니다. Django 설치하기 pip install django 명령어 수행 django-admin startproject config . 명령어 수행 해당 명령어 수행 시 현재경로(.)에 config라는 프로젝트 폴더가 생성됩니다. 디렉토리 구조 Django 설정하기 setting.py의 DATABASES = {} 부분을 수정해야 합니다. default 값은 다음과 같습니다. DATABASES 값을 다음과 같이 변경합니다. PASSWORD는 본인이 설정한 값을 입력합니다. ENGINE은 database의 종류를 지정하고, NAME은 생성한 database의 이름을 지..

Web/Django 2021.05.27

Vue .js 기본 문법 한 번에 정리하기

🔸Vue 인스턴스 생성하기 Vue 인스턴스 옵션 el data methods computed watch {{}} → property, mustache tag 표기법 3가지 케밥 표기법 : font-size 카멜 표기법 : fontSize 파스칼 표기법 : FontSize 키 수식자 3씩증가 키 수식자에는 다음과 같은 것들이 있다. .enter .tab .delete .esc .space .up .down .left .right 시스템 수식자 키 해당 시스템 키와 동시에 다른키가 눌렸을 때만 메소드를 호출함 .ctrl .alt .shift .meta (Windows는 Windows 키, maxOS는 command 키 🔸 v-test, {{ }} 🔸 v-bind 속성을 Vue 인스턴스의 data로 지정 🔸 ..

Web/Vue.js 2021.05.22