일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 2017 카카오 코드
- 완전 탐색
- 영문자 확인
- Java
- 순열
- 메뉴리뉴얼
- 에라토스테네스의 체
- 쿼드압축 후 개수세기
- 완전탐색
- 반복문
- Stack
- HashSet
- 어려웠던 문제
- fragment identifier
- Dynamic Programming
- 조합
- python
- 최소공배수
- dfs
- 보이어무어
- pandas
- 프로그래머스
- 동적계획법
- 알고리즘
- 튜플
- 후위 표기법
- 규칙찾기
- 문자열
- HashMap
- 점프와 순간이동
- Today
- Total
목록분류 전체보기 (148)
csmoon1010의 SW 블로그
1. 파일(file) - javascript를 js파일로 분리 : (장점) - 다른 곳에도 쉽게 적용 가능, 수정 용이(유지보수 편리) - 코드의 의미 명확 --> 가독성 향상 - 접속 횟수는 많아지지만 웹브라우저의 cache에 저장되어 네트워크를 통하지 않아도 됨!! 2. 라이브러리와 프레임워크 : 생산자로서의 소비자. 소프트웨어의 사회성. ① 라이브러리 : 내가 만들고자하는 프로그램에 필요한 부품이 되는 소프트웨어를 정리정돈, 재사용하기 쉽도록 해둔 소프트웨어 - 끌어오는(당겨오는) 느낌 - ex> jQuery 라이브러리 : 생산성이 훨씬 좋아짐! var Links = { setColor:function(color){ $('a').css('color', color); //모든 a태그를 jquery로 ..
JavaScript의 프로그래밍 언어적 요소(조건문, 반복문, 함수, 객체) 1. 조건문 : 조건에 따라서 다른 순서의 기능들이 실행되도록 하는 역할 --> 복잡한 업무까지도 가능하도록 (1) 문법 기초 ① === 같음을 뜻하는 연산자 ② if-else문 ex> toggle(현재 night이면 day로, 현재 day이면 night로 바뀌도록) (2) 리팩토링 : 공장으로 다시 보내 개선 = 코드를 좀 더 효율적으로 만들기 위해 유지보수, 중복제거 등등 ① this : 자기자신을 가리키는 태그는 this를 활용할 수 있다. _______ "night_day"를 가르키면 this 쓸 수 있음 ② 중복 제거 : 중복되는 값(ex> 태그)를 변수에 담으면 더 간결하고 수정에 용이하다. ____ target 변수..
1. 문제이해 - budgets의 합이 M이하이면 그대로 배정 - M 초과이면 상한액을 지정해 상한액 이상인 budgets은 상한액으로 처리 2. 전략 ① budgets를 오름차순으로 배열 ② limitIndex 함수 : 합이 M보다 작은 값 중 최대값을 가지는 index 구하기(이진탐색 이용) - M보다 작음 : **마지막 원소(모든 요청 가능) --> 해당 mid 출력 그 다음 원소값은 M보다 큼 --> 해당 mid 출력 else limitIndex(budgets, M, mid+1, end) - M보다 큼 : **첫 번째 원소(모든 요청 불가) --> -1출력 limitIndex(budgets, M, start, mid-1) ③ answer 구하기 - 모든 요청 가능 : 마지막 원소 출력 - 모든 요..
1. 문제이해 - 정사각형 타일을 차례로 붙여나가면서 만들어진 큰 직사각형 둘레 구하기 --> 결국은 "피보나치 수열" 2. 전략 ① 상향식 - sumList : n개일때 가로+세로의 값 저장 - sumList[i] = sumList[i-1] + sumList[i-2] ② 하향식(시간 초과) - sumCalculate(long N) : 재귀함수 이용 - sumCalculate(N-2) + sumCalculate(N-1) 3. 참고사항 - 효율성테스트 : 값이 커지면 int를 쓸 경우 범위를 벗어나 다른 결과가 나온다!! --> long타입을 써야됨!! 4. 코드 class Solution { public long solution(int N) { long answer = 0; long[] sumList =..
1. 문제이해 - Dynamic Programming : 복잡한 문제를 "작은 문제"로 나눠서 푸는 방법. "작은 문제"들이 중복되어 풀리게 됨 --> 주로 "재귀함수(recursive function)"을 많이 이용!! ① 하향식 알고리즘 : 문제푸는 순서는 큰 문제부터 ② 상향식 알고리즘 : 문제푸는 순서는 작은 문제부터 - number를 N으로 이루어진 사칙연산식을 이용하여 표현. N의 개수의 최솟값 구하기 2. 전략 - makeNumber: N으로 만들 수 있는 모든 number들을 담은 ArrayList를 return 사칙연산 : (1개, count-1개) ... (count-1개, 1개)로 나누어 사칙연산 후 ArrayList에 담기 반복숫자 : count의 개수만큼 반복된 숫자(ex> 555..
1. 문제 이해 - n개의 섬이 하나의 그룹으로 연결되도록! --> 비용이 최소가 되는 solution - [섬1, 섬2, , cost] 2. 전략 - 비용이 최소인 경로를 우선적으로 연결 - edge의 개수는 n-1개로 고정되야 최소값을 유지할 수 있다. - 조건 : 한 쪽만 연결되지 않은 경우만 경로에 추가 (모두 연결 - cycle 형성. edge의 개수가 n-1개를 넘어감) (모두 연결X - 모두 연결에서 예외가 발생, 순서를 다음으로 넘긴다. / 어려웠던 예외case!!) 3. 참고했던 사항&기타사항 - 2차원 배열의 정렬 Arrays.sort(costs, Comparator.comparingInt(o1 -> o1[2])); //o1의 3번째 요소에 따라 comparingInt for(int i..
1. 문제이해 - Greedy Algorithm : 각 단계에서 "가장 좋을 것"으로 판단되는 선택을 한다. --> 100% optimality를 충족하진 못하지만 dynamic 보다 쉽고 빠름 - 2개의 몸무게 합이 limit 이하게 되도록 짝지음 --> 짝의 개수가 최소 2. 전략 **몸무게가 큰 사람은 함께 탈 수 있는 사람의 수가 적음 --> 우선적으로 함께 탈 수 있는지 확인 - people배열을 크기순으로 sort(오름차순) - 첫번째 원소(최소값)과 마지막 원소(최대값)의 합이 limit이하이면 묶어주기 3. 기타사항 - 처음엔 ArrayList에 옮겨서 remove하면서 진행했음 --> 시간초과 오류 즉, 불필요한 Collections 인터페이스 사용을 지양하자!! 4. 코드 import ..
1. 배경 - HTML의 한계 : 정적 - 사용자와 동적으로 상호작용하는 웹페이지를 만들 필요성 - 웹브라우저는 한번 화면에 출력되면 자기자신을 바꿀 수 없음 --> javascript를 통해 변경해줌 2. HTML과 JavaScript의 만남 ① HTML 1+1 //1+1 ② event(사건) : 웹브라우저 위에서 일어나는 일들. 이 중 몇가지(10~20) 이벤트를 정의하고 있음 --> event발생시 웹브라우저의 동작을 JavaScript가 구현 ex>onclick속성(무언가를 클릭) - 속성값 : 반드시 JavaScript - 속성값은 웹브라우저가 기억 & 위치하고 있는 태그에 사용자가 클릭시 해석하여 웹브라우저가 동작 ex> onchange, onkeydown - 검색 예시 : Javascript..