일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 피라미드 출력
- 백준 2501번
- 백준 9506번
- 해석
- 5073번
- 백준 2587번
- 백준 1157번
- html
- 연속된 숫자의 합
- 자바
- 알고리즘
- 직각 삼각형
- 백준 27433번
- 일상생활 영어표현
- 백준 25305번
- 상세 풀이
- 백준 5086번
- 백준 2525번
- 배열
- Java
- 잡다한 일
- 논리 연산
- Unity
- javascript
- C++
- 백준 5597번
- 백준 1269번
- C
- 차이
- 백준 #11382번 #
- Today
- Total
목록자료구조와 알고리즘 (10)
YunDev

스택(Stack) 은 Last In, First Out (LIFO, 후입선출) 구조를 가지는 자료구조입니다.즉, 가장 마지막에 추가된 데이터가 가장 먼저 제거되는 방식입니다.1. 스택의 개념데이터를 쌓아 올리는 구조로 동작하며, 한쪽 끝에서만 데이터 삽입과 삭제가 이루어짐.후입선출(LIFO, Last In First Out) 구조.주로 함수 호출 스택, 되돌리기(Undo) 기능, 괄호 검사, 경로 탐색(DFS) 등에 사용됨. 배열을 이용한 스택 구현class Stack { private int top; // 스택의 최상위 인덱스 private int maxSize; // 스택의 크기 private int[] stackArray; // 배열을 이용한 스택 // 생성자 public..
이진 검색(Binary Search) 은 정렬된 배열에서 원하는 값을 찾을 때, 중앙 값을 기준으로 탐색 범위를 반으로 줄여가며 찾는 효율적인 알고리즘입니다.배열이 오름차순(또는 내림차순)으로 정렬되어 있어야 사용할 수 있음.배열의 중앙 값과 찾고자 하는 값을 비교하여 왼쪽 또는 오른쪽 반만 검색함.매 단계마다 검색 범위가 절반으로 줄어들므로 시간 복잡도는 O(log n) 으로 매우 빠름.(1) 반복문을 이용한 이진 검색public class BinarySearch { // 반복문을 이용한 이진 검색 public static int binarySearch(int[] arr, int target) { int low = 0; int high = arr.length - 1;..

선형 검색(Linear Search) 은 배열이나 리스트에서 원하는 값을 찾을 때, 처음부터 하나씩 차례대로 비교하면서 탐색하는 알고리즘입니다.배열의 첫 번째 요소부터 마지막 요소까지 차례로 비교하며 찾고자 하는 값과 일치하는지 검사합니다.일치하는 값을 찾으면 해당 인덱스를 반환하고, 찾지 못하면 -1을 반환합니다.정렬되지 않은 배열에서도 사용할 수 있지만, 평균적으로 시간 복잡도가 O(n)으로 비효율적입니다.public class LinearSearch { // 선형 검색 메서드 public static int linearSearch(int[] arr, int target) { for (int i = 0; i 보초법(Sentinel Linear Search)은 선형 검색을 최적..
자바에서 클래스(Class) 는 객체를 생성하기 위한 틀(템플릿)입니다. 클래스는 속성(멤버 변수)과 동작(메서드)을 포함하여 하나의 개체를 정의합니다.// 클래스 선언class 클래스이름 { // 멤버 변수 (필드) 데이터타입 변수명; // 생성자 클래스이름() { // 생성자 코드 } // 메서드 (행동) 반환타입 메서드이름(매개변수) { // 실행할 코드 }} 클래스 예제 코드입니다.// Person 클래스 정의class Person { // 멤버 변수 (속성) String name; int age; // 생성자 Person(String name, int age) { th..

어떤 정수 이하의 소수를 모두 나열하는 알고리즘입니다. 소수의 정의부터 살펴보자면 자신, 1외의 정수로 나누어 떨어지지 않는 정수입니다.public class PrimeNumber { public static void main(String[] args) { int counter = 0; //나눗셈 횟수 측정 for(int n = 2; n 이러한 방식으로 어떤 정수 n이 있을 때 정수 범위 -1까지 나눗셈을 진행하여 소수인지 아닌지 판단해볼 수 있습니다. 여기서 소수를 구하는 알고리즘을 개선해볼 수 있는데 소수를 어떤 방법으로 구할 수 있는지, 더 적은 계산 횟수로 소수를 구할 수 있는 방법이 있는지 살펴보겠습니다. 1.n이 2 또는 3으로 나누어 떨어지지 않으면 2의 배수 ..
정숫값을 임의의 기수로 변환하는 알고리즘입니다. 10진수 정수를 n진수 정수로 변환하려면 정수를 n으로 나눈 나머지를 구하는 동시에 나눈 몫에 대해 0이 될 때 까지 반복해야합니다. 이 과정으로 구한 나머지를 거꾸로 늘어놓은 숫자가 기수로 변환한 숫자입니다. package org.example;import java.util.Scanner;public class RadixConversion { static int conversion(int x, int r, char[] d) { int digit = 0; String dchar = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; do{ d[digit++] = dchar...
배열은 같은 자료형의 변수로 이루어진 구성 요소가 모인 것입니다. 배열 구성 요소의 자료형은 int, double 어떤 형이든 상관없이 각각의 배열의 원소는 같은 자료형입니다.int[] array = new int[5];이러한 방식으로 배열 변수 선언과 참조할 본체 선언을 같이 할 수 있습니다. 배열의 구성 요소는 자동으로 0으로 초기화됩니다.int[] a = new int[] {1, 2, 3, 4, 5};만약 초깃값을 주고 싶은 경우 요솟수를 제외하고 {} 사이의 값을 넣어줄 수도 있습니다.int[] a = new int[] {1, 2, 3, 4, 5};int[] b = a.clone();이 수식은 배열을 복제하고 복제한 배열에 대한 참조를 생성합니다. b 배열의 원소는 a의 복제이기 때문에 전부 같지..

반복문이 수행될 때 그 안에서 다시 반복되는 구조를 알아보고자 합니다. (이중 루프) for(int i = 1; i 이중 for문으로 1~9단까지의 곱셈표를 출력하는 간단한 코드입니다.그리고 이러한 이중 루프를 응용하여 도형을 출력 할 수도 있습니다.왼쪽 아래가 직각인 삼각형 메서드 static void triangleLB(int N) { //왼쪽 아래가 직각인 삼각형 for(int i = 1; i static void triangleLU(int N) { //왼쪽 위가 직각인 삼각형 for(int i = N; i >= 1; i--){ for(int j = i; j>=1; j--) { System.out.print("*"); ..
하나의 입구, 하나의 출구를 가진 구성 요소만을 계층적으로 배치하여 프로그램을 구성하는 방법을 구조적 프로그래밍이라고 합니다. 구조적 프로그래밍은 순차, 선택, 반복이라는 3종류의 제어 흐름을 사용합니다. 알아보고자 하는 프로그램은 두 자리의 숫자만 입력받을 수 있게 제한하는 코드입니다.import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int num = sc.nextInt(); while(num 99) { System.out.println("Enter a number betw..

컴퓨터는 프로그램의 명령에 따라 순서대로 일을 처리하고, 이 때 효율적인 결과를 얻기 위해 필요한 것이 알고리즘이다.그리고 자료구조는 정보를 효율적으로 저장하고 관리하는 방법으로서 효율적인 자료구조의 선택이 곧 효율적인 알고리즘이다. 이처럼 알고리즘과 자료구조는 상호 보완 관계에 있다.오늘부터 자료구조, 알고리즘을 함께 배우며 기록해보려고 한다. 반복문을 사용한 간단한 알고리즘부터 살펴보겠습니다.import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("1부터 n까지의 합"); ..