Programming Languages 17

[JAVA] 자바 기본형 타입 종류와 크기

자바의 기본형 변수는 메모리 스택 영역에 그 값을 바로 저장한다.(별도의 힙 메모리 영역에 값을 저장하고, 스택 영역의 변수가 이를 참조하는 참조형 변수와 차이) 이 기본형 변수의 크기 단위는 바이트(1바이트=8비트)로 표시한다. 8비트는 2^8 = 256개의 값을 표현할 수 있다.이 값들은 부호가 있을 때와 없을 때 범위가 달라지는데,각 자료형이 얼마의 값 범위를 내포하는지 알아보자.  1) 부호가 있는 경우 (Signed)-부호가 있는 형 종류 : byte, short, int, long-가장 왼쪽의 비트를 부호 비트로 사용한다.-정수형 데이터 타입에서 음수와 양수를 모두 표현 가능-부호 비트가 0이면 양수, 1이면 음수(= 2의 보수(2's complement) 표기법)-범위 계산법 :  -2^(n..

[JAVA] BufferedReader, BufferedWriter 사용해야 하는 이유

자바에서 입력은 Scanner 통해 받고,출력은 System.out.println("") 을 통해 한다. 평상시에는 이러한 입,출력이 문제가 되지 않지만 특정 상황의 경우 이것을 쓰는 것이 적합하지 않을 때가 있다. 바로 코딩테스트와 같은 시간 제한이 주어진 상황에서 컴파일이 완료되어야 하는 경우이다.원래 쓰던 대로 하면 시간 초과 오류가 뜬다.이 때 오류를 해결할 수 있는 방법은 입, 출력을 더 빠르게 받는 것이다!나는 코딩 테스트로 인해 이 방법을 알아보면서StringBuffer가 성능이 좋은 이유가 있듯이, BufferReader가 더 빠른 이유가 궁금해졌다. ■ 버퍼링 개념버퍼링은 데이터를 한 번에 조금씩 읽거나 쓰는 대신, 더 큰 덩어리로 읽거나 쓰는 방법이다. 이렇게 하면 디스크나 네트워크 같..

[Java] 자바 상속 구현 / extends, implements의 차이? / 개념과 사용법 정리

자바는 객체 지향 언어다. 객체 지향 언어 중 가장 큰 특징은 인데, 이러한 상속을 구현하는 형태를 간단히 정리하고자 한다. (객체 지향 언어에 대한 개념은 아래 글을 참고하면 좋다.) [JAVA] 객체 지향 언어(Object-Oriented Programming, OOP) 란? 자바는 객체 지향 언어(Object-Oriented Programming, OOP)이다. 객체 지향 언어(Object-Oriented Programming, OOP) 란? 현실 세계의 개체를 프로그램으로 표현하고 이러한 개체 간의 상호 작용을 통해 소프트웨어 hansjour.tistory.com 1. extends와 implements 개념 설명 자바에서 클래스와 인터페이스 간의 관계를 나타내는 방식이다. 1) extends :..

[JAVA] 객체 지향 언어(Object-Oriented Programming, OOP) 란?

자바는 객체 지향 언어(Object-Oriented Programming, OOP)이다. 객체 지향 언어(Object-Oriented Programming, OOP) 란? 현실 세계의 개체를 프로그램으로 표현하고 이러한 개체 간의 상호 작용을 통해 소프트웨어를 개발하는 방법론. 클래스를 사용하여 데이터와 해당 데이터를 처리하는 메서드를 하나의 단위로 묶고, 이를 통해 모듈화되고 재사용 가능한 소프트웨어를 구축할 수 있다. -절차적 프로그래밍 방식 => 순서대로만 처리하고 결과를 내는 방식 -구조적 프로그래밍 방식 => 프로그램을 함수단위로 나누고 함수끼리 호출하는 방식으로, 큰 문제를 해결하기 위해 문제를 작은 단위들로 나누어 해결한다. (Top-Down 방식) -객체 지향 프로그래밍 방식 => 구조적 ..

[JAVA/알고리즘] 깊이 우선 탐색 (DFS) 이란? / 자바 사용 예시 총 정리

탐색 : 많은 양의 데이터 중에서 원하는 데이터를 찾는 과정 어떤 메모리 구조를 가졌느냐에 따라 효율적인 탐색 방법이 갈리긴 하지만, 일반적으로 탐색에 쓰이는 알고리즘 중 대표적인 DFS에 대해 알아보도록 하겠다. 깊이 우선 탐색(DFS)은 이진 트리 구조를 기반의 효율적인 탐색 방법 중 하나이다. Depth First Search = 깊이 우선 탐색이라고도 부르며, 그래프와 트리의 깊은 부분을 우선적으로 탐색하는 알고리즘이다. ▷ 깊이 우선 탐색(DFS) 의 특징 -다음 분기로 넘어가기 전 해당 분기를 완벽하게 탐색하는 방식이다. -스택 메모리 구조에 기초하여 구현이 간단하다. -검색 대상 그래프가 크거나 경로의 특징을 저장해둬야 하는 문제에 유리 리프 노드(시작 정점)부터 시작해 정점과 연결 된 모든..

[JAVA/자료구조] Iterator와 반복문 / 자바에서 Iterator 사용하기

오늘은 자바의 Iterator의 개념과 장/단점을 알아보려고 한다. 먼저, Iterator가 무엇을 말하는지 살펴보자. 1. 개념 JAVA Iterator란? : 컬렉션 프레임워크(Collection Framework)에 저장된 데이터를 순회하는 인터페이스이다. 컬렉션 프레임워크는 List, Set, Map, Queue, ArrayList, Stack, LinkedList 등을 뜻한다. 2. 의의 -우리가 쓰는 웬만한 자료구조의 상위 개념에 속하는 인터페이스로, Iterator 문법 하나로 자료 구조의 일반적인 순회가 가능하다. 3. 대표 메소드 .hasNext() //다음 요소가 있는지 확인, return값 true/false .next() //다음 요소 호출 .remove() //요소 삭제 선언은 I..

[JAVA/자료구조] 자바 연결리스트 사용법 (Linked List) 구현 / 예제 정리

▷ 연결 리스트 (Linked List)란? 연결 리스트(Linked List)는 연결 리스트, 링크드 리스트는 각 노드가 데이터와 포인터를 가지고 한 줄로 연결되어 있는 방식으로 데이터를 저장하는 자료 구조이다. 연결 리스트에서 수행되는 작업은 값 추가, 삭제, 검색 등이 있다. 자세한 구현 방법은 아래 글을 통해 소개하겠다. 먼저 연결리스트의 개념에 대해 정리한 글은 다음과 같다. 자료 구조의 기본인 배열과 연결 리스트의 장단점과 차이점 등을 정리한 글이다. (언어와는 상관 없이 기본 개념을 참고하기 좋은 글이니 참고하도록 하자.) [C언어/자료구조] 포인터 - 연결 리스트(Linked List) / 배열과 차이점 / 개념 정리 오늘은 C언어의 자료 표현 방식 중 '포인터와 연결 리스트(Linked ..

[C언어/자료구조] 포인터 - 연결 리스트 (Linked List) 개념 총 정리 / 배열과 차이점?

오늘은 C언어의 자료 표현 방식 중 '포인터와 연결 리스트(Linked List)' 에 대해 알아보고자 한다. 연결 리스트는 링크(link)를 이용해 표현한 리스트이다. 연결 리스트는 배열의 한계를 극복한 표현 방법 중 하나로 동적 할당이 가능한 것이 특징이다. 그 구조를 더 이해하기 쉽게 데이터 구조를 먼저 살펴보자. 1. 포인터의 개념 데이터가 담긴 주솟값을 저장하는 변수 다른 어떤 변수의 주소를 그의 값으로 저장한다. C 언어에서는 모든 변수가 주소를 가지고 있기 때문에, 모든 변수에 대해서 포인터 유형이 존재한다. 2. 포인터의 특성 1) 초기화 - 포인터를 선언만 하고, 초기화하지 않으면 값은 미정(undefined), 포인터 변수에 주소를 지정해야 한다. - 주소 연산자 ‘&’를 해당하는 변수..

[C언어/자료구조] 배열 - 2차원 배열, 3차원 배열, 구조체, 순차 리스트

오늘은 C언어의 자료 표현 방식 중 반드시 기본으로 알아야 할 '배열' 에 대해 알아보고자 한다. 1. 배열의 개념 배열은 종류가 같은 여러개의 데이터를 순차적으로 나열한 것이다. 정수(int), 문자(char), 부동소수(double) 뿐 아니라 구조화 타입의 배열도 허용한다. 2. 배열의 특성 인덱스 범위(index range)가 존재하며 이 범위를 넘게 되면 에러가 발생한다. 배열의 크기는 선언 시 명세하며, 이 크기는 불변하다. (크기 = 길이) 배열의 lower bound는 항상 0이다. upper bound는 최소 lower bound의 +1 이다. 배열의 선언과 초기화가 동시에 가능하다. 예) int a[100]={0} //배열 a를 선언과 동시에 0으로 초기화 3. 배열의 선언 대괄호([ ..

[JAVA/자료구조] 자바 큐 Queue 사용법 / 큐의 특징과 예시 총 정리

▷ 큐(Queue)이란? 큐(Queue)는 FIFO(퍼스트 인 퍼스트 아웃) 원리를 기반으로 구성된 요소들의 집합을 나타내는 추상적인 데이터 유형이다. 큐는 스택과 다르게 양방향 자료구조이다. 즉 출구, 입구가 따로 따로 존재한다는 것이다. 스택의 삽입,삭제가 top에서 모두 이루어진다면 큐는 -큐의 가장 앞 부분을 가리키는 front -큐의 가장 뒷 부분을 가리키는 rear 에서 삽입, 삭제가 이루어진다. 큐에서 수행되는 작업은 다음과 같다. 큐의 rear에 데이터를 추가하는 add/offer, 큐의 front의 데이터를 제거하고 null값으로 채우는 poll, 제거만 하는 remove, 초기화하는 clear 큐의 맨 앞(front)에 있는 요소를 제거하지 않고 액세스하는 peek ▷ 큐(Queue)의..