본문 바로가기

전체 글

(81)
[Java] Java Synchronized 란? (Java 동기화) [Java] Java Synchronized 란? (Java 동기화) Synchronized 란? 먼저 Synchronized란 한글로 번역하면 동기화라는 의미를 갖는 단어이다. Synchronized (동기화)라는 뜻의 사전적 정의는 시스템을 동시에 작동시키기 위해 여러 사건들을 조화시키는 것을 의미한다. 라고 나와있다. 위의 사전적 정의만으로 동기화에 대한 이해가 확실이 되었다면, 이 글을 보지 않을까 싶다. 만일 JavaScript를 다루면서 AJax통신에 대해서 다뤄 보았다면 이해가 더 잘될꺼라 생각된다. AJax(Asynchronous JavaScript And XML)란 웹의 비동기적 통신을 위한 기술이다. 여기서 비동기적 통신의 의미는 만약, 우리가 웹사이트를 이용할 경우 다양한 기능을 사용..
[Java] Thread 란? (Thread 총 정리) [Java] Thread 란? (Thread 총 정리) Process 와 Thread 먼저 프로세스(Process)란 cpu에 의해 메모리에 올라가 실행중인 프로그램을 말한다. 자신만의 메모리 공간을 포함한 독립적인 실행공간을 갖고있다. 자바 JVM(Java Virtual Machine)은 주로 하나의 프로세스로 실행되며, 동시에 여러 작업을 수행하기 위헤 멀티 스레드를 지원한다. Thread란 프로세스 안에서 실질적으로 작업을 실행하는 단위를 말한다. Java에서는 JVM에 의해 관리가 된다. 한 프로그램에 여러개의 스레드가 존재 가능하며, 스레드가 1개이면 단일 스레드, 2개 이상이면 멀티 스레드 환경이 된다. Thread State Thread.State NEW : 스레드가 실행 준비가 완료된 상태..
[자료구조] Java Stack 이란? (Stack 메서드 정리, 예제 백준 9012 괄호 Java) [자료구조] Java Stack 이란? (Stack 메서드 정리, 예제 백준 9012 괄호 Java) Stack 이란? Stack이란 한쪽 끝에서만 Data의 입출력이 가능한 대표적인 자료구조이다. LIFO(Last In Firt Out)의 선형 구조이다. 즉, 가장 마지막에 들어간 데이터가 가장 먼저 나가는 구조이다. 즉, 쉽게 생각하면 일상에서 접시 혹은 책 등을 쌓아두는 구조라 생각하면 된다. 접시를 쌓아서 사용할 경우, 가장 나중에 놓여진 접시를 가장 먼저 사용하게 된다. Stack도 위와 같은 구조처럼, 가장 나중에 들어온 데이터를 가장 먼저 나가게 된다. Java Stack 사용하기 Java에서는 Stack을 편하게 사용할 수 있도록 java.util.Stack으로 라이브러리를 제공해 준다. ..
[자료구조] Java Queue 란? (Queue 메서드 정리, 예제 백준 11866 요세푸스 문제 Java) [자료구조] Java Queue 란? (Queue 메서드 정리, 예제 백준 11866 요세푸스 문제 Java) Queue 란? 큐 (Queue) 란 컴퓨터의 기본적인 자료구조 중 한가지 이다. 먼저 집어넣은 데이터가 먼저 나오는 구조이다 First In First Out(FIFO) 구조를 갖고 있다. 즉, 쉽게 생각하면 어떠한 곳을 이용하기 위해 줄을 서는 것과 같다고 생각하면 된다. 먼저 들어온 데이터가 먼저 빠져나가는 방식이다. 한가지 기억나는 재밌는 말이 있다. 햄버거를 주문하러 버거킹에 갔더니 여긴 큐가 3개네? 라고 들었던 말이 생각난다. Java Queue 사용하기 Java에서는 Queue를 쉽게 사용할 수 있도록 java.util 라이브러리에서 Queue 인터페이스를 지원한다. Queue를 ..
[알고리즘] 백준 2108 통계학 Java https://www.acmicpc.net/problem/2108 문제 수를 처리하는 것은 통계학에서 상당히 중요한 일이다. 통계학에서 N개의 수를 대표하는 기본 통계값에는 다음과 같은 것들이 있다. 단, N은 홀수라고 가정하자. 산술평균 : N개의 수들의 합을 N으로 나눈 값 중앙값 : N개의 수들을 증가하는 순서로 나열했을 경우 그 중앙에 위치하는 값 최빈값 : N개의 수들 중 가장 많이 나타나는 값 범위 : N개의 수들 중 최댓값과 최솟값의 차이 N개의 수가 주어졌을 때, 네 가지 기본 통계값을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 수의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 단, N은 홀수이다. 그 다음 N개의 줄에는 정수들이 주어진다. 입력되는 정수의 절댓값은 4,000을 ..
[알고리즘] 백준 1018 체스판 다시 칠하기 (브루트포스 알고리즘) https://www.acmicpc.net/problem/1018 문제 지민이는 자신의 저택에서 MN개의 단위 정사각형으로 나누어져 있는 M×N 크기의 보드를 찾았다. 어떤 정사각형은 검은색으로 칠해져 있고, 나머지는 흰색으로 칠해져 있다. 지민이는 이 보드를 잘라서 8×8 크기의 체스판으로 만들려고 한다. 체스판은 검은색과 흰색이 번갈아서 칠해져 있어야 한다. 구체적으로, 각 칸이 검은색과 흰색 중 하나로 색칠되어 있고, 변을 공유하는 두 개의 사각형은 다른 색으로 칠해져 있어야 한다. 따라서 이 정의를 따르면 체스판을 색칠하는 경우는 두 가지뿐이다. 하나는 맨 왼쪽 위 칸이 흰색인 경우, 하나는 검은색인 경우이다. 보드가 체스판처럼 칠해져 있다는 보장이 없어서, 지민이는 8×8 크기의 체스판으로 잘라..
[알고리즘] 백준 9020번 골드바흐의 추측 (에라토스테네스의 체, 소수 알고리즘) https://www.acmicpc.net/problem/9020 문제 1보다 큰 자연수 중에서 1과 자기 자신을 제외한 약수가 없는 자연수를 소수라고 한다. 예를 들어, 5는 1과 5를 제외한 약수가 없기 때문에 소수이다. 하지만, 6은 6 = 2 × 3 이기 때문에 소수가 아니다. 골드바흐의 추측은 유명한 정수론의 미해결 문제로, 2보다 큰 모든 짝수는 두 소수의 합으로 나타낼 수 있다는 것이다. 이러한 수를 골드바흐 수라고 한다. 또, 짝수를 두 소수의 합으로 나타내는 표현을 그 수의 골드바흐 파티션이라고 한다. 예를 들면, 4 = 2 + 2, 6 = 3 + 3, 8 = 3 + 5, 10 = 5 + 5, 12 = 5 + 7, 14 = 3 + 11, 14 = 7 + 7이다. 10000보다 작거나 같은..
[Java] Factory Method Pattern 이란? (디자인 패턴, 간단한 예제) [Java] Factory Method Pattern 이란? (디자인 패턴, 간단한 예제) [Java] Singleton Pattern 이란? (디자인 패턴) 이전 글에서 Singleton Pattern에 대해 공부를 하고 글을 작성해 두었다. 위의 글에서 작성하였듯이 디자인 패턴은 크게 3가지로 분류되는데 생성패턴, 구조패턴, 행위패턴이다. 그 중 오늘 작성할 Factory Method Pattern은 생성패턴에 속한다. Factory Method Pattern 이란? 팩토리 메서드 패턴(Factory method pattern)은 객체지향 디자인 패턴이다. Factory method는 부모(상위) 클래스에 알려지지 않은 구체 클래스를 생성하는 패턴이며. 자식(하위) 클래스가 어떤 객체를 생성할지를 결..

728x90
반응형