Algorithm 6

[Panda] 3. 스택과 큐

알고리즘 스터디 3주차 내용정리 스택콰 큐는 배열에서 발전된 형태의 자료구조이다.배열은 프로그램 언어 기능 중에서 가장 많이 사용되며, 동일한 형태의 자료를 연속해서 저장하는 구조를 가진다.스택(Stack)과 큐(Queue)는 구조는 비슷하지만 처리방식이 다르다는 특징을 가진다.JAVA의 컬렉션 프레임워크는 LIFO(후입선출) 자료구조를 제공하는 스택 클래스와 FIFO(선입선출) 자료구조를 제공하는 큐 인터페이스를 제공한다.스택 자료구조스택(Stack)은 스택을 쌓아올리 듯, 데이터를 쌓아올리는 구조이다.삽입과 삭제 연산이 데이터가 입력되는 순서대로 쌓고 나중에 들어온 것부터 먼저 사용하는 후입선출(LIFO; Last in First out) 형식으로 이루어지며 삽입과 삭제가 한 쪽에서만 일어나는 특징이..

Algorithm 2024.05.07

[Panda] 2. 구간 합(Prefix Sum)과 투 포인터 알고리즘

알고리즘 판다 1,2주차 정리 구간 합 알고리즘구간 합은 합 배열을 이용하여 시간 복잡도를 더 줄이기 위해 사용하는 특수한 목적의 알고리즘이다.구간 합 알고리즘을 활용하려면 먼저 합 배열을 구해야한다. 합 배열 S 정의S[i] = A[0] + A[1] + A[2] + ... + A[i-1] + A[i]이 사진의 합 배열S를 살펴보면 해당 인덱스까지의 원래 배열A값들의 합을 저장하고 있다. 합 배열 S를 만드는 공식S[i] = S[i-1] + A[i] 위 공식이 성립하는 이유를 위 사진의 예시로 생각해본다면 다음과 같이 합배열을 만들 수 있기 때문이다.int[] A = {15, 13, 10, 7, 3, 12};int[] S = new int[A.length];S[0] = A[0];for(int i = 1;..

Algorithm 2024.05.06

[백준] 1546번 평균 구하기

알고리즘 판다 1주차 문제https://www.acmicpc.net/problem/1546 배열과 리스트 파트 문제   풀이는 다음과 같다.코드를 더 간결하게 작성하기 위해 점수를 입력 받으면서 최고을 계산하도록 했다.import java.util.Scanner;public class Main { public static void main(String[] args){ Scanner scanner = new Scanner(System.in); int N = scanner.nextInt(); int[] score = new int[N]; int M = 0; for(int i = 0; i M){ M = score[..

Algorithm 2024.05.06

[백준] 11720번 숫자의 합

알고리즘 판다 1주차 문제https://www.acmicpc.net/problem/11720 배열과 리스트 파트 문제   처음 문제 풀 때 고민했던 것은 숫자들을 어떤 형식을 사용해서 입력받아야하느냐였던 것 같다.결국 숫자들을 쪼개야하는데 배열을 쓰는 것 보다는 String으로 받아서 메서드를 이용해 쪼개는게 빠르고 편리하지 않을 까 생각했다.그래서 코드를 다음과 같이 생각해봤다.import java.util.Scanner;public class Main { public static void main(String[] args){ Scanner scanner = new Scanner(System.in); int N = scanner.nextInt(); String..

Algorithm 2024.05.06

[Panda] 1. 배열과 리스트

알고리즘 스터디 1주차 정리 자료구조의 종류는 많지만 실제 자료구조를 구현하는 기술을 리스트와 Linked 리스트 두 가지가 있다. 리스트와 Linked 리스트를 활용하여 다양한 자료구조가 만들어진다.리스트: 데이터들이 연속적인 공간을 할당 받아 만들어지는 구조배열: 크기가 변하지 않는 리스트형 자료구조, 중간에 값을 지워도 빈칸으로 유지됨Array List: 크기가 변하는 자료구조, 중간의 값을 지우면 뒤의 것이 앞으로 이동Linked 리스트: 데이터들이 각각 공간을할당 받고 데이터 사이의 연결 고리가 만들어지는 구조 리스트형 자료구조배열 Array배열은 메모리의 연속된 공간에 값을 나열시키고 각 값에 인덱스를 부여해놓은 자료구조이다.구조가 간단하기 때문에 코딩테스트에 가장 많이 사용하는 자료구조 중 ..

Algorithm 2024.05.05

[Panda] 0. 알고리즘과 자료구조

알고리즘이란?컴퓨터 프로그래밍현대 컴퓨터의 작동 순서는 다음과 같다.메모리에서 읽기상태 기억 회로(레지스터)에서 상태를 입력받기규칙표 논리회로(CPU)에서 연산 실행메모리에 쓸 내용과 상태 기억 회로에서 쓸 내용 출력이 과정은 튜링 기계 작동 과정과 완전히 동일하다. 그래서 현대의 컴퓨터를 튜링기계라고 할 수 있다. 튜링 기계와 컴퓨터튜링 기계란 앨런 튜링(Alan Turing)이 독일의 수학자 데이비드 힐버트(David Hilbert)제기한 "모든 수학 문제를 풀 수 있는 알고리즘이 있는가?"라는 질문에 답하기 위하여 1936년에 소개한 개념이다.튜링은 모든 수학 문제는 기계로 형상화할 수 있고 가장 기본적인 동작의 합으로 표현할 수 있다고 생각했다. 입력 값(테이프), 제어 장치, 입출력 헤드 이 3..

Algorithm 2024.05.02