Algorithm 85

항해99 리부트코스 알고리즘 2주 1일차 백준 1406 에디터

https://www.acmicpc.net/problem/1406 import sysinput = sys.stdin.read# 초기 문자열과 명령어 입력 받기data = input().splitlines()initial_string = data[0]commands = data[1:]# 왼쪽 스택과 오른쪽 스택 사용left_stack = list(initial_string) # 초기 문자열을 왼쪽 스택에 넣음right_stack = []# 명령어 처리for command in commands: if command.startswith('L'): if left_stack: right_stack.append(left_stack.pop()) # 왼쪽 스택에서 오른쪽 스택으..

Algorithm/백준 2024.07.25

Heap, Hash Table

힙(heap)과 해시 테이블(hash)의 개념을 이해하고, 파이썬에서 자료구조를 구현각 자료구조의 특성을 파악하고, 실제 문제 해결에 활용자료구조를 활용한 알고리즘 문제를 해결 01. 힙 (Heap), 우선순위 큐(Priority Queue)- 힙은 완전 이진 트리의 일종으로, 우선순위 큐를 구현하기 위해 사용되는 자료구조 힙(heap)은 특정 규칙을 갖는 완전 이진 트리최대 힙: 부모 노드가 자식 노드보다 항상 크거나 같음최소 힙: 부모 노드가 자식 노드보다 항상 작거나 같음이진 트리각 노드가 최대 두 개의 자식 노드를 가지는 트리 구조완전 이진트리: 말단 노드를 제외하고 모든 노드가 2개의 자식을 갖고 있는 이진트리   힙의 특성힙은 각 노드가 하위 노드보다 큰(또는 작은) 우선순위를 가집니다.최대 ..

스택, 큐, 데크

스택(Stack) 자료구조를 이해하고 활용한다큐(Queue) 자료구조를 이해하고 활용한다데크(Deque) 자료구조를 이해하고 활용한다 1. 스택(Stack) - 입/출력이 한쪽 끝단에서 모두 발생하며, 후입선출 특징을 갖는 자료구조 후입선출(LIFO: Last In First Out) 특성을 가지는 자료구조스택의 기본 연산push: 스택의 맨 위에 새로운 요소를 추가pop: 스택의 맨 위에 있는 요소를 제거하고 반환peek: 스택의 맨 위에 있는 요소를 제거하지 않고 반환isEmpty: 스택이 비어 있는지 확인 활용 예시실행취소(Undo) 기능웹 브라우저의 뒤로가기함수 호출 스택 스택 코드 예시 Java utill.Stack 라이브러리 활용import java.util.Stack;public class ..

백준 코딩테스트 1914 하노이 탑

https://www.acmicpc.net/problem/1914 문제세 개의 장대가 있고 첫 번째 장대에는 반경이 서로 다른 n개의 원판이 쌓여 있다. 각 원판은 반경이 큰 순서대로 쌓여있다. 이제 수도승들이 다음 규칙에 따라 첫 번째 장대에서 세 번째 장대로 옮기려 한다.한 번에 한 개의 원판만을 다른 탑으로 옮길 수 있다.쌓아 놓은 원판은 항상 위의 것이 아래의 것보다 작아야 한다.이 작업을 수행하는데 필요한 이동 순서를 출력하는 프로그램을 작성하라. 단, 이동 횟수는 최소가 되어야 한다.아래 그림은 원판이 5개인 경우의 예시이다.입력첫째 줄에 첫 번째 장대에 쌓인 원판의 개수 N (1 ≤ N ≤ 100)이 주어진다.출력첫째 줄에 옮긴 횟수 K를 출력한다.N이 20 이하인 입력에 대해서는 두 번째 ..

Algorithm/백준 2024.07.23

백준 코딩테스트 2615 오목

https://www.acmicpc.net/problem/2615 문제오목은 바둑판에 검은 바둑알과 흰 바둑알을 교대로 놓아서 겨루는 게임이다. 바둑판에는 19개의 가로줄과 19개의 세로줄이 그려져 있는데 가로줄은 위에서부터 아래로 1번, 2번, ... ,19번의 번호가 붙고 세로줄은 왼쪽에서부터 오른쪽으로 1번, 2번, ... 19번의 번호가 붙는다. 위의 그림에서와 같이 같은 색의 바둑알이 연속적으로 다섯 알을 놓이면 그 색이 이기게 된다. 여기서 연속적이란 가로, 세로 또는 대각선 방향 모두를 뜻한다. 즉, 위의 그림은 검은색이 이긴 경우이다. 하지만 여섯 알 이상이 연속적으로 놓인 경우에는 이긴 것이 아니다.입력으로 바둑판의 어떤 상태가 주어졌을 때, 검은색이 이겼는지, 흰색이 이겼는지 또는 아직..

Algorithm/백준 2024.07.23

백준 코딩테스트 1244 스위치 켜고 끄기

https://www.acmicpc.net/problem/1244 문제1부터 연속적으로 번호가 붙어있는 스위치들이 있다. 스위치는 켜져 있거나 꺼져있는 상태이다. 에 스위치 8개의 상태가 표시되어 있다. ‘1’은 스위치가 켜져 있음을, ‘0’은 꺼져 있음을 나타낸다. 그리고 학생 몇 명을 뽑아서, 학생들에게 1 이상이고 스위치 개수 이하인 자연수를 하나씩 나누어주었다. 학생들은 자신의 성별과 받은 수에 따라 아래와 같은 방식으로 스위치를 조작하게 된다.남학생은 스위치 번호가 자기가 받은 수의 배수이면, 그 스위치의 상태를 바꾼다. 즉, 스위치가 켜져 있으면 끄고, 꺼져 있으면 켠다. 과 같은 상태에서 남학생이 3을 받았다면, 이 학생은 와 같이 3번, 6번 스위치의 상태를 바꾼다.여학생은 자기가 받은 수..

Algorithm/백준 2024.07.23

항해99 리부트코스 알고리즘 1주 5일차 25192 인사성 밝은 곰곰이

https://www.acmicpc.net/problem/25192 문제 알고리즘 입문방 오픈 채팅방에서는 새로운 분들이 입장을 할 때마다 곰곰티콘을 사용해 인사를 한다. 이를 본 문자열 킬러 임스는 채팅방의 기록을 수집해 그 중 곰곰티콘이 사용된 횟수를 구해 보기로 했다.ENTER는 새로운 사람이 채팅방에 입장했음을 나타낸다. 그 외는 채팅을 입력한 유저의 닉네임을 나타낸다. 닉네임은 숫자 또는 영문 대소문자로 구성되어 있다.새로운 사람이 입장한 이후 처음 채팅을 입력하는 사람은 반드시 곰곰티콘으로 인사를 한다. 그 외의 기록은 곰곰티콘을 쓰지 않은 평범한 채팅 기록이다.채팅 기록 중 곰곰티콘이 사용된 횟수를 구해보자!입력첫 번째 줄에는 채팅방의 기록 수를 나타내는 정수 𝑁$N$ 이 주어진다. (1≤..

Algorithm/백준 2024.07.23

항해99 리부트코스 알고리즘 1주 5일차 15650 N과 M (2)

https://www.acmicpc.net/problem/15650 문제자연수 N과 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오.1부터 N까지 자연수 중에서 중복 없이 M개를 고른 수열고른 수열은 오름차순이어야 한다.입력첫째 줄에 자연수 N과 M이 주어진다. (1 ≤ M ≤ N ≤ 8)출력한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다.수열은 사전 순으로 증가하는 순서로 출력해야 한다. 풀이 from itertools import combinationsimport sysinput = sys.stdin.readdef solve_problem(n, m): co..

Algorithm/백준 2024.07.23