java

Spring

[Spring] Spring(스프링)이란?

Java 언어와 Servlet/JSP를 학습하면 Spring Framework에 대해 학습합니다. 그럼 스프링이란 무엇이고 왜 등장하게 되었는지 알아보겠습니다. https://spring.io/ Spring | Home Cloud Your code, any cloud—we’ve got you covered. Connect and scale your services, whatever your platform. spring.io 1. Spring이란? 스프링을 한마디로 정의하기는 쉽지 않습니다. 간단하게 정의하기에는 핵심적인 특징이 있기 때문입니다. 또한 스프링에 대한 정의나 책을 본다고 해서 쉽게 이해되지 않습니다. 그렇다고 스프링을 얕게 공부하면 스프링의 본질적인 핵심과 기능을 놓치기 쉽습니다. 그래서 ..

BootCamp

[Java] DFS(깊이 우선 탐색)이란? Stack을 활용한 예제

안녕하세요 오늘은 DFS에 대해 알아보겠습니다. DFS는 Depth First Search의 약자이며, 깊이 우선 탐색이라고 부릅니다. 루트 노드나 임의의 노드에서 시작하여 최대로 진입할 수 있는 깊이까지 탐색한 후 돌아와 다른 노드로 탐색하는 방식입니다. Stack을 사용하여 데이터를 탐색합니다. 1. DFS (Depth First Search)의 장점과 단점 깊이 우선 탐색은 최대한 깊이 내려간 후 더 이상 깊이 갈 곳이 없으면 옆으로 이동합니다. 예를 들어, 미로 찾기에서는 최대한 한 방향으로 직진합니다. 더 이상 길이 없으면 Stack을 pop 하며 길을 찾아갑니다. ● 장점 현 경로상의 노드들만 기억하면 되므로 저장 공간 수요가 비교적 적습니다. 목표 노드가 깊은 단계에 있을 경우 해를 빨리 구..

BootCamp

[Java] 이진 탐색(Binary Search)를 활용한 재귀적 탐색

안녕하세요 오늘은 이진 탐색에 대해 알아보겠습니다. 이진 탐색이란 정렬된 데이터나 리스트에서 특정한 값을 빠르게 찾아내는 알고리즘입니다. 중간에 있는 임의의 값을 선택하여 찾고자 하는 값과 X와 비교합니다. X가 중간 값보다 작으면 중간 값을 기준으로 좌측의 데이터들을 대상으로, X가 중간 값보다 크면 우측을 대상으로 다시 탐색합니다. 다시 중간 값을 임의로 선택하고 비교합니다. 해당 값을 찾을 때까지 반복합니다. 1. 이진 탐색의 예시 int[] arr = {1, 5, 11, 16, 23, 38, 54, 66, 87, 100}; 순차적으로 정렬된 배열이 있습니다. 이 배열에서 이진 탐색을 이용하여 38의 값을 찾아보겠습니다. ①첫 번째 - 가운데 위치한 23을 선택합니다. - 선택한 값 23과 38을 ..

BootCamp

[Java] 후위 표기법 (PostfixNotation) 스택 활용하여 구현하기

안녕하세요 오늘은 후위 표기법(PostfixNotation)에 대해 알아보겠습니다. 우리가 일반적으로 사용하는 표기법은 연산자 사이에 피연산자가 오는 중위 표기법입니다. 후위 표기법은 연산자를 피연산자의 뒤에 놓는 방법입니다. 스택의 응용의 대표적인 예이며, 수식은 계산기에서나 컴퓨터 프로그래밍을 할 때 자주 나타납니다. 1. 코드 구현 과정 1.선언 및 분해 public class PostfixNotation { public static void main(String[] args) { PostfixNotation pfn = new PostfixNotation(); Stack ms = new Stack(); String a = "113 + 11 - ( 32 - ( 9 - 2 + 6 ) )"; String..

BootCamp

[Java] 원형 큐(Queue) 구현하기

안녕하세요 이번에는 선형 큐를 원처럼 이은 원형 큐(Queue)에 대해 알아보겠습니다. 원형 큐는 선형 큐의 문제점을 보완하기 위한 자료구조입니다. 선형 큐의 문제점은배열의 가장 앞에 있는 데이터를 꺼내오기 때문에 그 다음 인덱스의 데이터들을 한 칸씩 밀어야 하는 단점이 있습니다. 이 과정은 자료 하나를 꺼낼 때마다 반복문으로 수행되며, O(n)만큼의 시간 복잡도를 요구하므로 상당히 비효율적입니다. 1. 원형 Queue 분석 원형 Queue도 선형 Queue와 마찬가지로 1차원 배열을 사용하여 구현합니다. 하지만 선형 Queue와는 다르게 Shift를 해서 앞으로 밀지 않습니다. 배열을 선형으로 사용하여 삽입을 계속해야 하는 선형 Queue의 데이터를 넣을 때마다 번거로움이 있다는 단점을 해결합니다. 또..

BootCamp

[Java] 선형 큐(Queue) 구현하기

안녕하세요 오늘은 자료구조의 스택의 반대 개념인 큐(Queue)에 대해 알아보겠습니다. Queue는 스택과는 다르게 가장 먼저 들어간 데이터가 가장 먼저 나가는 구조를 말합니다. '선입선출'이라고 하며, First In First Out(FIFO)라고도 합니다. 예시로, 은행에 번호표가 있습니다. 은행에 가면 대기표를 발급받아 기다리는데, 번호표를 먼저 뽑은 순서대로 부르는 구조가 바로 Queue 구조입니다. Enqueue : 데이터에 큐를 넣는 동작 Dequeue : 큐에서 데이터를 꺼내는 동작 1. 선형 Queue 분석 선형 Queue는 1차원 배열을 사용하여 구현합니다. Shift를 해서 앞으로 땡겨지는데, 이러한 구조 자체가 비효율적이라는 단점이 있습니다. 이러한 문제를 해결하기 위해 나온 개념이..

Java

[Java] 조건문(if문, if-else문, switch-case문) 정리

안녕하세요 오늘은 프로그램의 흐름을 바꾸는 제어문 중에 조건문에 대해 알아보겠습니다. 조건문은 조건에 따라 다른 문장이 수행되도록 합니다. 조건문은 조건식과 문장을 포함하는 블럭 {}으로 구성되어 있으며, 조건식의 연산결과에 따라 실행할 문장이 달라져서 프로그램의 실행흐름을 변경할 수 있습니다. 조건문은 조건식과 문장을 포함하는 블록 {}으로 구성되어 있으며, 조건식의 연산 결과에 따라 실행할 문장이 달라져서 프로그램의 실행 흐름을 변경할 수 있습니다. 조건문은 if문과 switch문, 두 가지가 있으며 주로 if문이 많이 사용됩니다. 처리할 경우의 수가 많을 때는 if문보다 switch문이 효율적이지만, switch문은 if문보다 제약이 많습니다. 1. if문 if 문은 가장 기본적인 조건문이며, 다음..

BootCamp

[Java] 숫자 야구게임 만들기 (Baseball game)

오늘은 부트 캠프에서 배운 숫자로 야구게임을 구현해 보겠습니다. 문제는 다음과 같습니다. 숫자 야구게임 요약하자면, 숫자와 자리까지 같으면 스트라이크이고 숫자만 같고 자리가 다르면 볼입니다. (단, 중복된 숫자는 불가능하며 숫자의 범위는 정수 0부터 9까지입니다.) 사용자가 입력을 하고, 난수를 출력하는 메서드와 같은지 비교를 해서 구현하면 됩니다. 출력은 다음과 같습니다. input three number에 세 자리 숫자를 입력하면 컴퓨터가 판단해서 strike와 ball을 판단해서 출력합니다. 세 자리 숫자와 자리까지 같으면 success!!!라는 화면이 나오고 게임이 종료됩니다. 구현하기에 앞서, 메서드를 생각해 봤습니다. 1. 난수 생성 메서드 2. 사용자 입력 메서드 3. 메인 메서드 난수를 생..

Java

[Java] 화면에서 입력 받기 : Scanner(스캐너) 사용 방법과 메서드

오늘은 화면에서 입력받는 Scanner 클래스에 대해 알아보겠습니다. 지금까지는 화면에 출력만 해왔는데, 이제 Scanner 클래스를 사용하여 입력받는 방법에 대해서 배워보겠습니다. 자바에서 화면으로부터 입력받는 방법은 여러 가지가 있지만, 가장 많이 쓰이는 방법은 Scanner 클래스를 사용하는 것입니다. 참고로 Scanner는 JDK 1.5버전부터 추가된 클래스입니다. 1. Scanner 클래스 사용법 먼저 Scanner 클래스를 사용하기 위해서는 아래의 한 문장을 추가해 줘야 합니다. Scanner sc = new Scanner(System.in); 그다음엔 Scnner 클래스의 객체를 생성합니다. Scanner sc = new Scanner(System.in); 그리고 nextLine()이라는 메..

Java

[Java] 변수란? 변수의 타입 및 상수와 리터럴

오늘은 변수(Variable)과 변수의 타입 및 상수와 리터럴에 대해 알아보겠습니다. 1. 변수(Variable) 수학에서 변수를 '변하는 수'라고 정의하지만 프로그래밍 언어에서의 변수란, 값을 저장할 수 있는 메모리 공간'을 의미합니다. 이 공간에 저장된 값은 변경될 수 있기 때문에 '변수'라는 수학 용어의 정의와 의미가 맞아 이렇게 이름을 붙였습니다. 2. 변수의 선언과 초기화 2-1 변수의 선언 - 변수를 사용하려면 먼저 변수를 선언해야 하는데, 변수의 선언 방법은 다음과 같습니다. int age; // age라는 이름의 변수를 선언 '변수 타입'은 변수에 저장될 값이 어떤 '타입'인지를 지정하는 것입니다. 저장하고자 하는 값의 종류에 맞게 변수의 타입을 선택해서 적어주면 됩니다. '변수 이름'은 ..

기록하는 개발
'java' 태그의 글 목록