백준 알고리즘 - 2750 - 수 정렬하기
2021. 8. 20. 17:49
⏰ 코딩테스트/백준 알고리즘
코드 1. 삽입 정렬 N = int(input()) data = [] for _ in range(N): a = int(input()) data.append(a) for stand in range(len(data)-1): lowest = stand for i in range(stand+1, len(data)): if data[lowest] > data[i]: lowest = i data[stand], data[lowest] = data[lowest], data[stand] for i in data: print(i) 2. 버블 정렬 N = int(input()) data = [] for _ in range(N): a = int(input()) data.append(a) for i in range(len(da..
백준 알고리즘 - 5397 - 키로거
2021. 8. 19. 11:17
⏰ 코딩테스트/백준 알고리즘
접근법 문자열의 크기가 1,000,000 이므로 단순하게 구현하라는대로 구현하면 문제를 풀 수 없다. O(n) 의 선형시간 안에 문제를 풀 수 있는 알고리즘을 짜야 문제를 해결할 수 있다. 스택 풀이 코드 testcase = int(input()) for _ in range(testcase): arr = list(str(input())) stack1 = [] stack2 = [] for i in range(len(arr)): if arr[i] == "": if len(stack2) != 0: stack1.append(stack2.pop()) elif arr[i] == "-": if len(stack1) != 0: stack1.pop() else: stack1.append(arr[i]) print(''.j..
CSS
2021. 8. 18. 16:22
📱 Full-Stack
CSS는 밋밋한 HTML 태그에 디자인을 씌워주는 언어입니다. 보통 웹 개발을 할 때 HTML 태그로 요소들을 구현하고 CSS로 디자인을 입히고 배치를 도와줍니다. 기본 문법 선택자 { 속성1 : 값; 속성2 : 값; } 선택자 선택자는 스타일을 적용할 대상입니다. 태그, id, class 등을 선택할 수 있습니다. /* 태그를 선택자로 했을 때 */ p { color: orange; } /* 태그를 id로 했을 때 */ #title { color: blue; } /* 태그를 class로 했을 때 */ .item { color: red; } id는 딱 한 요소에게만 적용됩니다. 우리의 주민등록번호는 고유한 것처럼 id도 마찬가지로 한 요소에게만 적용됩니다 (태그에 동일한 id를 넣어도 한 개만 적용됨) ..
html
2021. 8. 18. 14:28
📱 Full-Stack
html : 웹의 구조 CSS : 웹의 디자인 p태그 a태그 : 링크 개발자 도구 키기 : control + option + i html의 구조에는 head와 body가 있고 body에는 실제 컨텐츠 head에는 타이틀, CSS 불러오기, 자바스크립트 불러오기 Hello Pilly Hello Pilly Hello Pilly 기본 태그 Hello world Hello world Hello world Hello world Hello world Hello world Hello~~ Hello~~ Hello~~ Hello~~ Naver ID Password This is cloud h 태그 : 헤드라인 태그, 제목을 쓸 때 사용된다. br 태그 : 줄바꿈 태그 p 태그 : 문단을 나눌때 사용하는 태그 a 태그 :..
백준 알고리즘 - 1966 - 프린터 큐
2021. 8. 18. 11:24
⏰ 코딩테스트/백준 알고리즘
코드 test_case = int(input()) for _ in range(test_case): n,m = map(int, input().split()) queue = list(map(int, input().split())) queue = [(i, index) for index, i in enumerate(queue)] # 튜플 형태로 # [(2,0), (1,1), (4,2), (3,3)] count = 0 while True: if queue[0][0] == max(queue, key=lambda x: x[0])[0]: #맨앞==현재큐의 가장큰중요도 count += 1 if queue[0][1] == m: print(count) break else: queue.pop(0) else: # 맨앞이 현재 ..
선형대수 - 4개 주요 부분 공간 간의 관계
2021. 8. 17. 22:12
✏️ Mathemathics/Linear Algebra
선형대수 용어 정리 고유벡터(eigen vector) : 선형변환했을 때 방향은 변하지 않고 크기만 변하는 벡터 고유값(eigen value) : 고유벡터가 변환되는 크기 행렬식(deteminant) : ad-bc, 부피 determinant = 0 : 행렬을 구성하는 벡터가 서로 동일선상(colinear)에 있다는 것 기저(basis) : 벡터 공간을 생성하는 선형독립인 벡터들 벡터공간(Vector space) : basis로 생성 가능한 공간 부분공간(Subspace) : 전체 공간의 일부분 Span : 기저 벡터들로 구성되는 2차원 부분 공간 랭크(Rank) : 행렬의 열벡터에 의해 span된 벡터공간의 차원 정규 직교 기저 : 벡터의 크기가 1이고 서로 수직인 기저 벡터, A-1 = AT, AAT..
선형대수 - Eigen vector(고유 벡터), Eigen value(고유 값)의 기하학적 의미
2021. 8. 17. 21:37
✏️ Mathemathics/Linear Algebra
행렬에 벡터를 넣어주면 다른 벡터가 나온다. 행렬은 선형변환이다 = 행렬은 일종의 함수처럼 작동한다. 선형 변환이 되어서 (3,3)의 결과가 나온다. 어떤 벡터들은 선형 변환 시 크기만 바뀌고 방향이 바뀌지 않을 수 있다. Eigen value, Eigen vector 고유 벡터 : 벡터 x에 행렬을 곱해줬을 때(선형변환 시켜줬을 때), 크기만 변하고 원래 벡터와 평행한 벡터 Eigen vector(고유 벡터) : 입력 벡터 x를 A로 선형변환 시킨 결과 Ax가 그저 x가 상수배 된 벡터 여기서 x 가 Eigen vector(고유 벡터), 변한 크기인 람다가 Eigen Value(고유값)이 된다. (A-람다 I) 가 역행렬을 가지게 되면, (A-람다 I)x = 0 에 역행렬을 곱해주면 x = 0 이 되므..
백준 알고리즘 - 1874 - 스택 수열
2021. 8. 17. 15:52
⏰ 코딩테스트/백준 알고리즘
추천 문제 풀이 시간 : 30분 틀린 코드 n = int(input()) stack = list() ans = list() num = 1 for i in range(1,n+1): p = int(input()) for j in range(num, n+1): if not stack or stack[-1] != p: # 비어있거나 다를때 stack.append(j) num += 1 ans.append("+") else: # 같을 때 stack.pop() ans.append("-") break print(ans) 틀린 이유 for문과 while 문을 구별해서 잘 쓸 줄 알아야 한다. 카운트 하는 변수가 여러개가 있고, 개별로 늘려갈 때 꼭 for j in range(..) 로 쓰는 방법만 있는 것이 아니라 wh..
백준 알고리즘 - 2798 - 블랙잭
2021. 8. 16. 22:25
⏰ 코딩테스트/백준 알고리즘
10 500 93 181 245 214 315 36 185 138 216 295 접근법 카드의 개수(N)와 넘지 않는 양의 정수(M) 입력 받기 카드 입력 받기 (card) 카드 3장 뽑기 (All) 3장의 합이 500보다 작은 것들 중 가장 큰 것 추출 for 문을 3번이나 써야해서 망설였다. 내 풀이 N, M = map(int, input().split()) arr = list(map(int, input().split())) sum = list() ans = list() for i in range(N-2): a = arr[i] for j in range(i+1, N-1): b = arr[j] for k in range(j+1, N): c = arr[k] sum.append(a+b+c) sum.sort..
백준 알고리즘 - 2920 - 음계
2021. 8. 16. 21:09
⏰ 코딩테스트/백준 알고리즘
헤맨 이유: 하나 하나 다 비교하고, 비교하는 와중에 "ascending"이나 "descending" 을 출력하려고 했다. ascend = True, descend = True 로 미리 설정한 후 그 값이 거짓이면 False로 바꿔주고 비교가 다 끝나고 나서 True나 False 값을 체크해서 출력해주면 된다. if arr[0] < arr[1] < arr[2] < arr[3] < arr[4] < arr[5] < arr[6] < arr[7] : print("ascending") 을 만드는 코드를 짤 수 있었으면 더 좋았지만 ascend 와 descend를 True로 정해놓고 조건에 맞는다면 False로 바꿔주는 방법도 굉장히 좋은 것 같다. 내 풀이 arr = list(map(int,input().spli..
힙
2021. 8. 16. 11:24
🕶 Algorithm/자료구조
힙 (Heap) 이란? 힙: 데이터에서 최대값과 최소값을 빠르게 찾기 위해 고안된 완전 이진 트리(Complete Binary Tree) 완전 이진 트리: 노드를 삽입할 때 최하단 왼쪽 노드부터 차례대로 삽입하는 트리 힙을 사용하는 이유 배열에 데이터를 넣고, 최대값과 최소값을 찾으려면 O(n) 이 걸림 이에 반해, 힙에 데이터를 넣고, 최대값과 최소값을 찾으면, 𝑂(𝑙𝑜𝑔𝑛) 이 걸림 우선순위 큐와 같이 최대값 또는 최소값을 빠르게 찾아야 하는 자료구조 및 알고리즘 구현 등에 활용됨 힙 (Heap) 구조 힙은 최대값을 구하기 위한 구조 (최대 힙, Max Heap) 와, 최소값을 구하기 위한 구조 (최소 힙, Min Heap) 로 분류할 수 있음 가장 높은 값이 루트인 힙 = 최대 힙 가장 낮은 값이 ..
Node - 화살표 함수
2021. 8. 10. 11:46
🚦 Server/Node.js
화살표 함수는 function을 완전히 대체할 수는 없다. function add1(x+y){ return x + y; } const add2 = (x,y) => { return x + y; }; const add3 = (x,y) => x + y; const add4 = (x,y) => (x+y); // 헷갈릴 수 있으니 리턴값 묶어준다. function not1(x){ return !x; } const not2 = x => !x; 주의할 점 바로 객체를 리턴하는 경우에만 (소괄호) 필수!! const obj = (x, y) => ({x, y}); const obj = (x, y) => { return {x, y} }; 화살표 함수가 기존 함수를 대체할 수 없는 이유 : this 화살표 함수는 무조건 부..
Node - const, let 는 var를 대체한다.
2021. 8. 10. 11:23
🚦 Server/Node.js
var, const if (true){ var x = 3; } console.log(x); // 3 if (true){ const y = 3; } console.log(y); // Uncaught Reference Error: y is not defined function a(){ var z = 3; } console.log(z); // Uncaught Reference Error: z is not defined 블록{} 바깥에서 y를 접근하면 에러가 난다. variable은 function으로 감쌌을 때 밖에서 접근을 못한다. variable은 함수 스코프를 존중하고, const는 블록 스코프를 존중한다. let const a = 3; a = '5'; // 다른거 대입하면 에러 const b = { n..
Node - 호출 스택, 이벤트 루프
2021. 8. 10. 10:18
🚦 Server/Node.js
1. 호출 스택 function first(){ second(); console.log('첫번째'); } function second(){ third(); console.log('두번째'); } function third(){ console.log('세번째'); } first(); >> 세번째 두번째 첫번째 함수를 선언했다는 것은 메모리에 올렸다는 뜻이다. 메모리는 임시 저장 장치이다. 컴퓨터가 잠깐 기억하는 것이다. Anonymous는 파일이 시작될 때 생긴다. 항상 있다고 생각하면 좋다. 가상의 전역 컨텍스트이다. 호출스택은 자바스크립트가 어떻게 실행되는 건지 보여준다. 동기식 코드이다. 2. 이벤트 루프 function run() { console.log("3초 후 실행"); } console.lo..
최단 경로 알고리즘
2021. 8. 9. 21:23
🕶 Algorithm/알고리즘
1. 최단 경로 문제란? 최단 경로 문제란 두 노드를 잇는 가장 짧은 경로를 찾는 문제임 가중치 그래프 (Weighted Graph) 에서 간선 (Edge)의 가중치 합이 최소가 되도록 하는 경로를 찾는 것이 목적 최단 경로 문제 종류 1. 단일 출발 및 단일 도착 (single-source and single-destination shortest path problem) 최단 경로 문제 그래프 내의 특정 노드 u 에서 출발, 또다른 특정 노드 v 에 도착하는 가장 짧은 경로를 찾는 문제 2. 단일 출발 (single-source shortest path problem) 최단 경로 문제 그래프 내의 특정 노드 u 와 그래프 내 다른 모든 노드 각각의 가장 짧은 경로를 찾는 문제 따지고 보면 굉장히 헷깔릴..
탐욕 알고리즘 (Greedy Algorithm)
2021. 8. 9. 21:10
🕶 Algorithm/알고리즘
1. 탐욕 알고리즘 (Greedy Algorithm)이란? Greedy algorithm 또는 탐욕 알고리즘 이라고 불리움 최적의 해에 가까운 값을 구하기 위해 사용됨 여러 경우 중 하나를 결정해야할 때마다, 매순간 최적이라고 생각되는 경우를 선택하는 방식으로 진행해서, 최종적인 값을 구하는 방식 2. 탐욕 알고리즘 예 문제1 : 동전 문제 지불해야 하는 값이 4720원 일 때 1원, 50원, 100원, 500원 동전으로 동전의 수가 가장 적게 지불하시오. 가장 큰 동전부터 최대한 지불해야 하는 값을 채우는 방식으로 구현 가능 탐욕 알고리즘으로 매순간 최적이라고 생각되는 경우를 선택하면 됨 coin_list = [500, 100, 50, 1] def min_coin_count(value, coin_lis..