구구
[JS] 🗓️JavaScript 30 - Day 4
[JS] 🗓️JavaScript 30 - Day 4
2021.11.17📖Day 4 - Array Cardio Day 1 JavaScript 30의 Day 4 프로젝트는 무언갈 만드는 프로젝트는 아니고, 자바스크립트의 Array에 대해서 알아보는 시간이다. Array의 다양한 method들을 공부해보자. 🤓📄코드 모아보기 HTML Psst: have a look at the JavaScript Console 💁 🔎코드 설명 이번 프로젝트에서는 Array의 다양한 method들을 공부한다. Array.filter() filter() 메서드는 배열 내 각 요소에 대해 한 번 제공된 callback 함수를 호출해, callback이 true로 강제하는 값을 반환하는 모든 값이 있는 새로운 배열을 생성한다. callback은 할당된 값이 있는 배열의 인덱스에 대해서만 호출된다. 이..
[JS] 🗓️JavaScript 30 - Day 3
[JS] 🗓️JavaScript 30 - Day 3
2021.11.12📖Day 3 - Playing with CSS Variables and JS JavaScript 30의 Day 3 프로젝트는 JavaScript를 이용해 CSS를 조작해 이미지를 업데이트하는 프로젝트이다. 🤓📄코드 모아보기 HTML ✨Update CSS Variables with JS✨ Padding Blur Base Color CSS :root { --base: #364f6b; --spacing: 10px; --blur: 10px; } img { width: 20rem; padding: var(--spacing); background: var(--base); filter: blur(var(--blur)); } h1 { color: #364f6b; } .point { color: var(--base); ..
[JS] 🗓️JavaScript 30 - Day 2
[JS] 🗓️JavaScript 30 - Day 2
2021.11.11📖Day 2 - CSS + JS Clock JavaScript 30의 Day 2 프로젝트는 '시계 만들기'이다. 화면에 CSS와 JavaScript를 통해 각자의 시계를 만들어보는 프로젝트이다. 🤓📄코드 모아보기 HTML CSS html { background: linear-gradient(45deg, #796302 0%, #a79e2c 50%, #006492 100%); background-size: cover; font-family: "helvetica neue"; text-align: center; font-size: 10px; } body { margin: 0; font-size: 2rem; display: flex; flex-direction: column; flex: 1; min..
[JS] 🗓️JavaScript 30 - Day 1
[JS] 🗓️JavaScript 30 - Day 1
2021.11.10📖Day 1 - JAVASCRIPT DRUM KIT JavaScript 30의 Day 1 프로젝트는 '드럼 킷 만들기'이다. 화면에 매칭 된 키보드 버튼을 누르면 연결된 audio 파일을 재생하는 프로젝트이다. 🤓📄코드 모아보기 HTML Q A2A3 W A3 E B2 R B3 U B3B4 I B4 O C#3 P C#3C#4 A C#4 S D#4 D D3 F D5 J E2 K E4 L F2 : F2F3 CSS html { font-size: 10px; background: url("./images/background.jpg") center; background-size: cover; } body, html { margin: 0; padding: 0; font-family: sans-serif..
[JS] 🗓️JavaScript 30 - 30일간 30개의 프로젝트
[JS] 🗓️JavaScript 30 - 30일간 30개의 프로젝트
2021.11.07"There is no formation without repetition." "반복 없이는 결과물도 없다." 프로그래밍 언어와 친숙해지는 데는 여러 가지 방법이 있지만, 해당 언어를 이용해서 무언가를 만들어보는 게 가장 빠르다고 한다. JavaScript 30 프로젝트는 라이브러리, 프레임워크 등이 없는 순수한 자바스크립트만을 이용해서 30일간 각기 다른 30개의 프로젝트를 만들어내는 것이 목표다. JavaScript 30 Starter Files 프로젝트의 기본 뼈대(HTML, CSS) 는 위의 깃허브 링크에서 다운로드 받을 수 있고, 이메일을 통해 가입하면 강의도 무료로 들을 수 있다. 이제 JavaScript와 더욱 가까워지는 시간을 가져봐야겠다. JavaScript 30 홈페이지
[BOJ] 13398 연속합 2 (Pyhton / 파이썬)
[BOJ] 13398 연속합 2 (Pyhton / 파이썬)
2021.08.23🧷 문제 https://www.acmicpc.net/problem/13398 n개의 정수로 이루어진 임의의 수열이 주어질 때, 연속된 몇개의 수를 선택해서 구할 수 있는 합 중 가장 큰 값을 구하는 문제이다. (단, 수열에서 수를 하나 제거할 수 있다(제거하지 않아도 된다.)) 🛠 풀이 이 문제는 2차원의 DP table을 구성하여 해결할 수 있다. Step 1. 먼저 수열에서 수를 하나 제거했을 때 (dp[i][1])와 그렇지 않은 경우 (dp[i][0])로 나누어준다. dp[0][0], dp[0][1] 은 sequence[0]으로 초기화 해준다. Step 2. 1부터 n-1까지 for문을 돌면서 1. dp[i][0]은 아무런 원소를 제거하지 않았을 때를 비교하면 되므로, (이전까지의 연속합 + i번째..
[BOJ] 9465 스티커 (Python / 파이썬)
[BOJ] 9465 스티커 (Python / 파이썬)
2021.08.18🧷 문제 https://www.acmicpc.net/problem/9465 각 스티커에 점수를 매기고, 점수의 합이 최대가 되게 스티커를 떼어내는 문제이다. (단, 뗀 스티커의 왼쪽, 오른쪽, 위, 아래에 있는 스티커는 사용할 수 없게 된다.) 🛠 풀이 이 문제 또한 혼자 풀다가 해결하지 못해 다른 사람들의 풀이를 참고했다. 여러 사람들의 풀이를 보는데도 이해가 힘들었는데, 거의 다 같은 풀이여서 조금 더 생각을 해봐야할 것 같다. 이 중 내가 이해한 코드의 풀이는 두 가지다. 1. Step 1. 스티커의 점수 리스트를 입력받은 후에, 위쪽 스티커를 뗀 경우(up), 아래쪽 스티커를 뗀 경우(down), 아무것도 떼지 않은 경우(non) 세 가지로 나누어 값을 구해간다. Step 2. for문을 돌면서 ..
[BOJ] 2225 합분해 (Python / 파이썬)
[BOJ] 2225 합분해 (Python / 파이썬)
2021.08.17🧷 문제 https://www.acmicpc.net/problem/2225 0부터 N까지의 정수 K개를 더해서 그 합이 N이 되는 경우의 수를 구하는 프로그램을 작성하는 문제이다. 🛠 풀이 혼자 풀다가 해결하지 못해 다른 사람들의 풀이를 참고했다. 여러 사람들의 풀이를 보니 이 문제는 DP로 푸는 것과 중복조합을 이용해 푸는 두 가지 방법이 존재한다. 1. DP Step 1. 먼저 DP table을 (K x K)의 2차원 테이블로 정의하고, 0부터 N까지의 정수 K개를 더해서 그 합이 N이 되는 경우의 수를 dp[N][K]에 넣어준다. ex) N = 0, K = 2 일 경우 : 0부터 2까지의 정수 1개를 더해 합이 2가 되는 경우의 수이다. 만들 수 있는 경우의 수는 0+0 한 가지 밖에 없을 것이다...
[BOJ] 1699 제곱수의 합 (Pyhton / 파이썬)
[BOJ] 1699 제곱수의 합 (Pyhton / 파이썬)
2021.08.17🧷 문제 https://www.acmicpc.net/problem/1699 주어진 자연수 N을 제곱수들의 합으로 표현할 때에 그 항의 최소개수를 구하는 문제이다. 🛠 풀이 이 문제는 Bottom-Up 방식의 DP로 해결할 수 있다. Step 1. 먼저 DP table을 길이 n의 1차원 리스트로 만들어준다. 모든 항은 최대 i의 길이를 가지므로 (1+1+1+...+1) 값은 i로 초기화해준다. d = [i for i in range(n+1)] Step 2. 주어진 숫자가 제곱수라면 제곱수 항의 최소 개수는 항상 1이므로, 1부터 i까지 제곱수들을 빼가면서 뺀 숫자 + 1과 기존의 최소 개수를 비교하여 답을 구해준다. if dp[i] > dp[i - j*j] + 1: dp[i] = dp[i - j*j] +..
[BOJ] 11053 가장 긴 증가하는 부분 수열 (Pyhton / 파이썬)
[BOJ] 11053 가장 긴 증가하는 부분 수열 (Pyhton / 파이썬)
2021.08.04🧷 문제 https://www.acmicpc.net/problem/11053 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 문제이다. 🛠 풀이 이 문제는 DP로 해결할 수 있는 보편적인 문제 중 하나이다. Step 1. 먼저 DP table을 길이 n의 1차원 리스트로 만들어준다. 모든 부분수열은 최소한 1의 길이를 가지므로 값은 1로 초기화해준다. d = [1] * n Step 2. 주어진 sequence리스트를 순회하면서 해당 인덱스 i까지 더 작은 값을 갖는 sequence[j] 중 DP table의 값이 가장 큰 d[j]에 1을 더해준다. Step 3. 위의 방법으로 구해진 DP table의 값들 중 가장 큰 값을 출력한다. 🖊 나의 코드 import sys if __name__ ..
[BOJ] 10844 쉬운 계단 수 (Python / 파이썬)
[BOJ] 10844 쉬운 계단 수 (Python / 파이썬)
2021.08.04🧷 문제 https://www.acmicpc.net/problem/10844 정수 n이 주어졌을 때, 길이가 n인 모든 자리수의 차이가 1이 나는 계단수의 개수를 구하는 문제이다. 🛠 풀이 이 문제는 DP table을 1차원이 아닌 2차원으로 구성해야 해결할 수 있다. Step 1. 먼저 DP table을 d[자리수][끝자리 숫자] = 경우의 수로 구성한다. Step 2. 자리수 0 1 2 3 4 5 6 7 8 9 1 0 1 1 1 1 1 1 1 1 1 2 1 1 2 2 2 2 2 2 2 1 3 1 3 3 4 4 4 4 4 3 2 자리수가 1일때부터 보면, 자리수가 1일때는 당연하게도 경우의 수가 1이다. 자리수가 2일때부터는 맨 뒤에 0 또는 9가 오는 경우 특수하다. 첫번째로, 0으로 끝나는 경우 자..
[BOJ] 15990 1, 2, 3 더하기 5 (Python / 파이썬)
[BOJ] 15990 1, 2, 3 더하기 5 (Python / 파이썬)
2021.08.01🧷 문제 https://www.acmicpc.net/problem/15990 정수 n이 주어졌을 때, n을 1, 2, 3의 합으로 나타내는 과정에서 같은 수를 두 번 이상 연속해서 사용하지 않는 방법의 수를 구하는 문제이다. 🛠 풀이 이 문제는 DP table을 1차원이 아닌 2차원으로 구성해야 해결할 수 있다. Step 1. 먼저 각 인덱스의 DP table을 길이 4의 리스트로 받는데 0번 인덱스에는 n을 만들 수 있는 방법의 수, 1 ~ 3번 인덱스에는 각 인덱스로 끝나는 방법의 수를 넣어준다. 예를 들면 d[3]의 경우 2 + 1, 1 + 2, 3 이렇게 총 3가지의 경우를 가지고 있고 1, 2, 3으로 끝나는 방법이 각 1개씩 존재하므로 d[3] = [3, 1, 1, 1]로 초기화해준다. 같은 ..