
오늘 TIL 3줄 요약 높은 결합도는 변경의 적이다. 이벤트에 잘 반응하는 애플리케이션을 만드는 전략 4가지 (유한 상태 기계, 감시자 패턴, 게시-구독 , 반응형 프로그래밍과 스트림) 다형성은 인터페이스로 표현하는 것이 좋다. ( 인터페이스와 프로토콜은 상속 없이도 다형성을 가져다준다.) TIL (Today I Learned) 날짜 2022. 03. 26 오늘 읽은 범위 5장. 구부러지거나 부러지거나 책에서 기억하고 싶은 내용을 써보세요. 메서드 호출을 엮지 말라. 무언가에 접근할 때 "."을 딱 하나만 쓰려고 노력해보라. - page.188 전역적이어야 할 만큼 중요하다면 API로 감싸라. - page.191 결합된 코드는 바꾸기 힘들다. 직접적으로 아는 것만 다루는 부끄럼쟁이 코드를 계속 유지하라...

문제 이번 정보올림피아드대회에서 좋은 성적을 내기 위하여 현수는 선생님이 주신 N개의 문제를 풀려고 합니다. 각 문제는 그것을 풀었을 때 얻는 점수와 푸는데 걸리는 시간이 주어지게 됩 니다. 제한시간 M안에 N개의 문제 중 최대점수를 얻을 수 있도록 해야 합니다. (해당문제는 해당시간이 걸리면 푸는 걸로 간주한다, 한 유형당 한개만 풀 수 있습니다.) 풀이 function solution(m, arr) { let answer = 0; let dy = Array.from({ length: m + 1 }, () => 0); for (let i = 0; i = pt; ..

냅색 알고리즘이란? 배낭 문제는 조합 최적화의 유명한 문제이다. 간단하게 말하면, 한 여행가가 가지고 가는 배낭에 담을 수 있는 무게의 최댓값이 정해져 있고, 일정 가치와 무게가 있는 짐들을 배낭에 넣을 때, 가치의 합이 최대가 되도록 짐을 고르는 방법을 찾는 문제이다. 문제 다음과 같이 여러 단위의 동전들이 주어져 있을때 거스름돈을 가장 적은 수의 동전으로 교환 해주려면 어떻게 주면 되는가? 각 단위의 동전은 무한정 쓸 수 있다. 풀이 function solution(m, coin) { let answer = 0; let dy = Array.from({ length: m + 1 }, () => 1000); dy[0] = 0; for (let i = 1; i < coin.length; i++) { for..

문제 N개의 자연수로 이루어진 수열이 주어졌을 때, 그 중에서 가장 길게 증가하는(작은 수에서 큰 수로) 원소들의 집합을 찾는 프로그램을 작성하라. 예를 들어, 원소가 2, 7, 5, 8, 6, 4, 7, 12, 3 이면 가장 길게 증가하도록 원소들을 차례대로 뽑아내면 2, 5, 6, 7, 12를 뽑아내어 길 이가 5인 최대 부분 증가수열을 만들 수 있다. 풀이 function solution(arr) { let answer = 0; let dy = Array.from({ length: arr.length }, () => 0); dy[0] = 1; for (let i = 1; i = 0; j--) { if (arr[i] > arr[j] && dy[j] > max) { max = dy[j]; } } dy[..

문제 철수는 학교에 가는데 개울을 만났습니다. 개울은 N개의 돌로 다리를 만들어 놓았습니다. 철 수는 돌 다리를 건널 때 한 번에 한 칸 또는 두 칸씩 건너뛰면서 돌다리를 건널 수 있습니다. 철수가 개울을 건너는 방법은 몇 가지일까요? 풀이 function solution(n) { let answer = 0; let dy = Array.from({ length: n + 2 }); dy[1] = 1; dy[2] = 2; for (let i = 3; i

동적 계획법(dynamic programming, DP)이란? 특정 범위까지의 값을 구하기 위해서 그것과 다른 범위까지의 값을 이용하여 효율적으로 값을 구하는 알고리즘 설계 기법이다. 문제를 보며 예시를 들어 보겠습니다. 문제 철수는 계단을 오를 때 한 번에 한 계단 또는 두 계단씩 올라간다. 만약 총 4계단을 오른다면 그 방법의 수는 1+1+1+1, 1+1+2, 1+2+1, 2+1+1, 2+2로 5가지이다. 그렇다면 총 N계단일 때 철수가 올라갈 수 있는 방법의 수는 몇 가지인가? 먼저 1번 계단을 오르는 방법의 수는 1가지입니다. 그리고 2번째 계단을 오르는 방법의 수는 2가지이고요 그렇다면 3번째는 어떨까요? 3번째에 다다르는 방법은 1번째에서 오던가 혹은 2번째 계단에서 오던가 2가지입니다. 그런..

문제 N*N의 섬나라 아일랜드의 지도가 격자판의 정보로 주어집니다. 각 섬은 1로 표시되어 상하좌우와 대각선으로 연결되어 있으며, 0은 바다입니다. 섬나라 아일랜드에 몇 개의 섬이 있는지 구하는 프로그램을 작성하세요. 풀이 DFS function solution(board) { let answer = 0; let n = board.length; let dx = [-1, -1, 0, 1, 1, 1, 0, -1]; let dy = [0, 1, 1, 1, 0, -1, -1, -1]; function DFS(x, y) { board[x][y] = 0; for (let k = 0; k = 0 && nx < ..

문제 현수는 송아지를 잃어버렸다. 다행히 송아지에는 위치추적기가 달려 있다. 현수의 위치와 송아 지의 위치가 수직선 상의 좌표 점으로 주어지면 현수는 현재 위치에서 송아지의 위치까지 다음과 같은 방법으로 이동한다. 송아지는 움직이지 않고 제자리에 있다. 현수는 스카이 콩콩을 타고 가는데 한 번의 점프로 앞으로 1, 뒤로 1, 앞으로 5를 이동할 수 있다. 최소 몇 번의 점프로 현수가 송아지의 위치까지 갈 수 있는지 구하는 프로그램을 작성하세요. 풀이 function solution(s, e) { let answer = 0; let ch = Array.from({ length: 10001 }, () => 0); let dis = Array.from({ length: 10001 }, () => 0); let..
- Total
- Today
- Yesterday
- 노마드코더
- TopLayer
- NextRequest
- 프론트앤드
- 북클럽
- NextApiRequest
- javascript
- 스토리 북
- C언어
- import/order
- WSL2
- 노개북
- nextjs
- 원티드
- Storybook
- 초보
- 위코드
- React
- nodejs
- jest
- electron
- error
- createPortal
- 우아한테크코스
- 아차산
- 프리온보딩
- CLASS
- env
- 윤성우 열혈C프로그래밍
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |