본문 바로가기

자료구조37

[집합/수학] 백준 28445 알록달록 앵무새 - 파이썬(Python) [ Contents ] 1. 문제 (링크 참조) https://www.acmicpc.net/problem/28445 28445번: 알록달록 앵무새 재현이가 키우는 앵무새 포포와 레몬이는 그동안 새끼들을 참 많이도 낳았다. 그렇게 태어난 앵무새들을 관찰하며 재현이는 앵무새들의 색에 간단한 규칙이 있다는 것을 발견했다. 그것은 바로 www.acmicpc.net 2. 문제 풀이 부모의 몸통색과 꼬리색이 주어집니다. 부모가 가진 색만 자녀에게 물려줄 수 있습니다. 자녀의 몸통색과 꼬리색이 될 수 있는 경우의 수를 출력합니다. 3. 코드 import sys input = sys.stdin.readline # 입력 color = set() for _ in range(2): tmp = input().rstrip()... 2023. 8. 14.
[자료구조/집합] 백준 11478 서로 다른 부분 문자열의 개수 - 파이썬(Python) [ Contents ] 1. 문제 (링크 참조) 11478번: 서로 다른 부분 문자열의 개수 첫째 줄에 문자열 S가 주어진다. S는 알파벳 소문자로만 이루어져 있고, 길이는 1,000 이하이다. www.acmicpc.net 2. 문제 풀이 주어진 문자열 S의 부분 문자열 개수를 구하는 문제입니다. 부분 문자열은 S의 연속된 일부분을 뜻합니다. 3. 코드 # 입력 S = input().rstrip() # 집합으로 구현 char_set = set() len_S = len(S) for i in range(0, len_S): for j in range(i, len_S): char_set.add(S[i:j+1]) print(len(char_set)) 여기서 주의해야할 점은 '중복 제외'입니다. 주어진 문자열이 a.. 2023. 8. 10.
[자료구조/스택] 백준 28278 스택 2 - 파이썬(Python) [ Contents ] 1. 문제 (링크 참조) 28278번: 스택 2 첫째 줄에 명령의 수 N이 주어진다. (1 ≤ N ≤ 1,000,000) 둘째 줄부터 N개 줄에 명령이 하나씩 주어진다. 출력을 요구하는 명령은 하나 이상 주어진다. www.acmicpc.net 2. 문제 풀이 스택 자료구조를 구현하는 문제입니다. 2023.07.17 - [Algorithm] - [자료구조/스택] 백준 10828 스택 - 파이썬(Python) [자료구조/스택] 백준 10828 스택 - 파이썬(Python) [ Contents ] 1. 문제 (링크 참조) 10828번: 스택 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1.. 2023. 8. 10.
[자료구조/큐] 백준 10845 큐 - 파이썬(Python) [ Contents ] 1. 문제 (링크 참조) 10845번: 큐 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 2. 문제 풀이 push X: 정수 X를 큐에 넣는 연산 pop: 큐에서 가장 앞에 있는 정수를 빼고, 그 수를 출력 (비어있으면 -1 출력) size: 큐에 들어있는 정수의 개수를 출력 empty: 큐가 비어있으면 1, 아니면 0을 출력 front: 큐의 가장 앞에 있는 정수를 출력 (비어있으면 -1 출력) back: 큐의 가장 뒤에 있는 정수를 출력 (비어있으면 -1 출력) 큐를 구현하는 문제입니.. 2023. 7. 17.
[자료구조/스택] 백준 10828 스택 - 파이썬(Python) [ Contents ] 1. 문제 (링크 참조) 10828번: 스택 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 2. 문제 풀이 - push X: 정수 X를 스택에 넣는 연산 - pop: 스택에서 가장 위에 있는 정수를 빼고, 그 수를 출력 (빈 스택이면 -1 출력) - size: 스택에 들어있는 정수의 개수 출력 - empty: 스택이 비어있으면 1, 아니면 0을 출력 - top: 스택의 가장 위에 있는 정수를 출력 (빈 스택이면 -1 출력) 스택을 구현하는 문제입니다. 2022.02.10 - [Algori.. 2023. 7. 17.
[자료구조/스택] 백준 1918 후위 표기식 - 파이썬(Python) [ Contents ] 1. 문제 (링크 참조) 1918번: 후위 표기식 첫째 줄에 중위 표기식이 주어진다. 단 이 수식의 피연산자는 알파벳 대문자로 이루어지며 수식에서 한 번씩만 등장한다. 그리고 -A+B와 같이 -가 가장 앞에 오거나 AB와 같이 *가 생략되는 등의 www.acmicpc.net 2. 문제 풀이 중위 표기식으로 표현된 식을 '후위 표기식'으로 변환하는 문제입니다. 중위 표기식은 [피연산자 - 연산자 - 피연산자] 순으로 우리가 일상에서 사용하는 형식입니다. 반면 후위표기식은 [피연산자 - 피연산자 - 연산자] 순으로 식을 나열합니다. 앞에 피연산자가 2개 이상 쌓이고, 연산자를 만나면 그제서야 계산하는 방식입니다. 2022.02.10 - [Algorithm] - [Algorithm] 스.. 2022. 10. 30.
[탐색/자료구조] 백준 1991 트리 순회 - 파이썬(Python) [ Contents ] 1. 문제 (링크 참조) 1991번: 트리 순회 첫째 줄에는 이진 트리의 노드의 개수 N(1 ≤ N ≤ 26)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 각 노드와 그의 왼쪽 자식 노드, 오른쪽 자식 노드가 주어진다. 노드의 이름은 A부터 차례대로 알파 www.acmicpc.net 2. 문제 풀이 주어진 트리를 '전위', '중위', '후위' 탐색하는 문제입니다. 전위 순회: 중간 -> 왼쪽 -> 오른쪽 중위 순회: 왼쪽 -> 중간 -> 오른쪽 후위 순회: 왼쪽 -> 오른쪽 -> 중간 자료구조 단골 시험문제죠. "주어진 트리를 전위/중위/후위 순회하시오." 전위와 중위는 탐색 경로는 같으나, '방문'하는 시점이 다릅니다. '전위'는 루트부터 찍고 왼쪽 오른쪽을 탐색하고, '중위'는 .. 2022. 9. 21.
[우선순위큐/그리디] 백준 1715 카드 정렬하기 - 파이썬(Python) [ Contents ] 1. 문제 (링크 참조) 1715번: 카드 정렬하기 정렬된 두 묶음의 숫자 카드가 있다고 하자. 각 묶음의 카드의 수를 A, B라 하면 보통 두 묶음을 합쳐서 하나로 만드는 데에는 A+B 번의 비교를 해야 한다. 이를테면, 20장의 숫자 카드 묶음과 30장 www.acmicpc.net 2. 문제 풀이 여러 개의 정렬된 카드 묶음(deck)을 하나로 합치는 데에 필요한 최소 비교횟수를 구해야 합니다. 2022.02.20 - [Algorithm] - [Algorithm] 힙(heap), 최소/최대로 정렬하는 우선순위 큐 [Algorithm] 힙(heap), 최소/최대로 정렬하는 우선순위 큐 그래프의 트리 구조 중 하나인 '힙'과 구현 방법에 대해 알아보고, 그와 관련된 우선순위 큐도 .. 2022. 9. 12.
[자료구조/해시] 백준 20232 Archivist - 파이썬(Python) [ Contents ] 1. 문제 (링크 참조) 20232번: Archivist The only line of input contains a single integer $y$ ($1995 \le y \le 2019$), denoting the year. You don't need to process year numbers less than $1995$ or greater than $2019$, or incorrect year formats. It is guaranteed that you will be given a number bet www.acmicpc.net 2. 문제 풀이 1995년부터 2019년까지의 대회 수상자의 이름이 문제에 주어집니다. 년도가 입력되면, 해당 연도의 수상자를 출력합니다. 3... 2022. 7. 31.