알고리즘(46)
-
[Data Structure] 스택(stack), 큐(Queue)
[Data Structure] 스택(stack), 큐(Queue) 이전에는 stack과 queue에 대해 해당 자료구조의 기본적인 개념을 알고 문제풀이에 사용했다면 이번에는 해당 자료구조의 구현을 통해 해당 자료구조에 대해 좀 더 알아보았다. 파이썬에서는 리스트 자료구조를 통해 스택과 큐를 둘 다 쉽게 구현 가능했었지만 그것에 의존하지 않고 해당 자료구조를 알아보는 시간을 가질 수 있었다. 큐와 스택을 구현하는 방법에는 배열과 연결리스트가 존재한다. 이때 구현에 관해 각자의 사용 장단점부터 살펴보았다. 배열 배열의 인덱스를 사용하여 편리하게 사용한다는 장점 원하는 데이터가 어디있는지 위치를 파악할 수 있는것 크기가 정해져있기에 고정배열 사용 시 주기적으로 크기를 살펴봐야한다 연결 리스트 노드 / 연결리스..
2022.11.10 -
[Python] 백준 알고리즘 18405 - 경쟁적 전염
[Python] 백준 알고리즘 18405 - 경쟁적 전염 18405번: 경쟁적 전염 (acmicpc.net) 18405번: 경쟁적 전염 첫째 줄에 자연수 N, K가 공백을 기준으로 구분되어 주어진다. (1 ≤ N ≤ 200, 1 ≤ K ≤ 1,000) 둘째 줄부터 N개의 줄에 걸쳐서 시험관의 정보가 주어진다. 각 행은 N개의 원소로 구성되며, 해당 위치 www.acmicpc.net 풀이 과정 문제에서 입력하는 값 n, k / 실험관의 크기와 바이러스의 종류 시험관 s, ( x , y ) / 실험 시간과 실험 후 추출하고자 하는 좌표 사용 개념 우선순위 큐, 덱 너비 우선 탐색 그래프 풀이 접근방법 문제에 해당하는 입력값을 입력받는다 실험관에서 바이러스의 종류(vn), 해당 바이러스의 위치(x, y), 실..
2022.11.09 -
[Data Structure] Linked List - 링크드 리스트
node - 노드 링크드 리스트란 노드란 것을 사용해서 구현한 하나의 자료구조이다. class Node: def __init__(self, data): self.data = data self.next = None 노드의 경우 위의 코드와 같이 생겼으며 생성자를 통해 구성을 살펴보자. 노드의 경우 두 가지 인자를 바탕으로 생성이 된다. 하나는 노드에서 담고자 하는 데이터를 저장하는 변수, 그리고 또 하나는 그다음에 올 노드의 정보를 담는 변수의 방식으로 생성이 된다. 노드의 경우 배열처럼 하나의 지정된 공간에 여러 가지 데이터를 담아두는 그런 자료구조가 아니다. 다만 노드는 메모리 여러 군데에 저장되며 노드 안에 다음 노드의 정보를 기입하여 다음 노드를 불러올 수 있는 식으로 데이터의 저장 및 활용이 가능..
2022.11.09 -
[Python] 백준 알고리즘 15650번 - N과 M(2)
[Python] 백준 알고리즘 15650번 - N과 M(2) https://www.acmicpc.net/problem/15650 15650번: N과 M (2) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 접근 방법 n과 m(1)과 동일한 접근이다. 하지만 중복은 없어야 한다는 게 문제의 조건이다. https://skyriv312079.tistory.com/63 [Python] 백준 알고리즘 15649번 - N과 M(1) [Python] 백준 알고리즘 15649번 - N과 M(1) https://www.acmicpc.net/problem..
2022.10.06 -
[Python] 백준 알고리즘 15649번 - N과 M(1)
[Python] 백준 알고리즘 15649번 - N과 M(1) https://www.acmicpc.net/problem/15649 15649번: N과 M (1) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 접근 방법 숫자 입력 → 문제의 요구사항 입력 n. m 입력 / 정답 기록용의 s 리스트 생성 메서드 구현 주어진 n까지 중복 없이 m개를 골라 출력 리스트 s의 길이가 m과 동일해지면 해당 반복문을 멈추고 출력 후 종료 join 및 map 활용 동일하지 않은 경우 for 반복문 실행( 1 ~ n + 1까지), i는 반복문에 할당된 변..
2022.10.06 -
[Python] 백준 알고리즘 11053번 - 가장 긴 증가하는 부분 수열
[Python] 백준 알고리즘 11053번 - 가장 긴 증가하는 부분 수열 문제 출처 : https://www.acmicpc.net/problem/11053 11053번: 가장 긴 증가하는 부분 수열 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이 www.acmicpc.net 접근방법 가장 긴 증가하는 부분수열 이번에는 메모이제이션 기법을 이용해서 기존 수열과의 길이 비교에 사용된다. 메모이제이션을 사용하는 동적계획법의 이번 문제의 시간복잡도는 for문의 반복 첫번째 반복문에서 n번 그 다음 반복문은 i..
2022.07.31