일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Dinosaur
- Nest.js
- MongoDB
- AWS
- JavaScript
- GIT
- class
- jest
- 게임
- Express
- TypeScript
- Bull
- game
- dfs
- 공룡게임
- typeORM
- OCR
- cookie
- MySQL
- Python
- 정렬
- 자료구조
- Sequelize
- nodejs
- flask
- nestjs
- mongoose
- Queue
- react
- Today
- Total
목록자료구조알고리즘 (128)
포시코딩
문제 https://school.programmers.co.kr/learn/courses/30/lessons/120907 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 내 풀이 def solution(quiz): answer = [] for i in range(len(quiz)): a = quiz[i].split(" ") if a[1]=='+' and int(a[0])+int(a[2])==int(a[4]): answer.append('O') elif a[1]=='-' and int(a[0])-int(a[2])==int(a[4]): answer.append..
문제 https://school.programmers.co.kr/learn/courses/30/lessons/120808 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 내 풀이 1 - 실패 def solution(denum1, num1, denum2, num2): denum = 0 num = 0 if num1 > num2: num1, num2 = num2, num1 denum1, denum2 = denum2, denum1 if num2 % num1 == 0: denum = denum1*(num2//num1) + denum2 num = num2 else: ..
문제 https://school.programmers.co.kr/learn/courses/30/lessons/120876 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 내 풀이 A 1. 겹치지 않게 모든 사람이 가위바위보 하는 방법을 응용해 2차원 배열 내 모든 좌표를 서로 비교한다. 2. 두 좌표 A, B의 시작, 끝 좌표에 대해 (시작:s, 끝: e) if A.e
문제 https://www.youtube.com/watch?v=OzFXiukhv8o&list=PLsMufJgu5933ZkBCHS7bQTx0bncjwi4PK&index=9 내 풀이 str = '(()))(' def test(str): stack = [] try: for char in str: # print(char) if char == '(': stack.append(char) else: stack.pop() if len(stack) > 0: return False # '(' 더 많음 else: return True except: return False # ')' 더 많음 result = test(str) print(result) stack을 이용해 괄호'()' 의 짝을 맞추는 문제를 효율적으로 푸는 방법..
문제 https://school.programmers.co.kr/learn/courses/30/lessons/120894 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 내 풀이 def solution(numbers): answer_str = '' number_dict = { 'zero': '0', 'one': '1', 'two': '2', 'three': '3', 'four': '4', 'five': '5', 'six': '6', 'seven': '7', 'eight': '8', 'nine': '9' } target = '' for char in numb..
문제 https://school.programmers.co.kr/learn/courses/30/lessons/120861 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 내 풀이 def solution(keyinput, board): character_x = 0 character_y = 0 max_right = (board[0]-1)/2 max_left = -(board[0]-1)/2 max_up = (board[1]-1)/2 max_down = -(board[1]-1)/2 for e in keyinput: if e == 'right' and charact..
예제를 통해 이중 for문의 시간복잡도를 구해보자 algorithm sum(A, n): sum = 0# 1번 for i=0 to n-1 do# n번 for j=i to n-1 do# 아래에서 설명 sum += A[i] * A[j]# 3번 return sum 각 for문의 돌아간 횟수 i j 0 n 1 n-1 2 n-2 ... ... n-1 n-(n-1)=1 식으로 나타내기 for j=i to n-1 do # 여기서 i가 n-1이라면 j=도 n-1이 되고 to n-1 즉, n-1이 n-1이 될 때 까지니까 한 번 돌게 된다. # 규칙을 부여해서 찾는다면 n-(i의 시작 수)가 되니 n-(n-1)이 되어 n-n+1 즉, 1이 되는 방법도 있다. 결국 이중 for문의 횟수는 위 표의 j 밑에 있는 값들을 모두..
문제 Q. 다음과 같이 0 혹은 양의 정수로만 이루어진 배열이 있을 때, 왼쪽부터 오른쪽으로 하나씩 모든 숫자를 확인하며 숫자 사이에 '✕' 혹은 '+' 연산자를 넣어 결과적으로 가장 큰 수를 구하는 프로그램을 작성하시오. 단, '+' 보다 '✕' 를 먼저 계산하는 일반적인 방식과는 달리, 모든 연산은 왼쪽에서 순서대로 이루어진다. 풀이 1 def result(array): answer = 0 while len(array) > 0: target = array.pop(0) plus = answer + target multi = answer * target if plus > multi: answer = plus else: answer = multi return answer print("정답 = 728 현재 ..
동적 계획법이란? 동적 계획법은 여러 개의 하위 문제를 풀고 그 결과를 기록하고 이용해서 문제를 해결하는 알고리즘이다. 왜 써야할까? 동적 계획법을 왜 써야하는지에 대해 말하기전에 먼저 피보나치 수 구하는 법에 대해 알아보자. 피보나치 수열 * 피보나치 수: 첫째 및 둘째 항이 1이며 그 뒤의 모든 항은 바로 앞 두 항의 합인 수열. ex) 1, 1, 2, 3, 5, 8, ... n번째 피보나치 수를 Fibo(n)으로 표현한다면 일단 Fibo(1)과 Fibo(2)는 1이다. Fibo(3)부터는 이전 값과 이전 이전 값의 합이 된다. Fibo(3) = Fibo(1) + Fibo(2) = 1 + 1 + 2 그러면 Fibo(4) = Fibo(3) + Fibo(2) = 2 + 1 = 3 Fibo(5) = Fib..
BFS란? 한 노드를 시작으로 인접한 모든 노드들을 우선 방문하는 방법. 더 이상 방문하지 않은 노드가 없을 때까지 방문하지 않은 모든 노드들에 대해서도 BFS를 적용한다. BFS 구현 방법 1. 큐 BFS는 현재 인접한 노드들을 먼저 방문해야 한다. 이걸 다시 말하면 인접한 노드 중 방문하지 않은 모든 노드들을 저장해두고 가장 처음에 넣은 노드를 꺼내서 탐색하면 된다. -> 처음에 넣은 노드를 꺼낸다. -> 큐를 쓰면 되겠구나 큐를 사용한다는 점 말고는 DFS에서 스택을 사용하는 방법과 매우 유사하다. 코드로 직접 살펴보자 graph = { 1: [2, 3, 4], 2: [1, 5], 3: [1, 6, 7], 4: [1, 8], 5: [2, 9], 6: [3, 10], 7: [3], 8: [4], 9:..