본문 바로가기

CS

(17)
[DFS&BFS] 개념 정리 및 구현 01. 그래프 탐색 알고리즘그래프의 모든 정점들을 특정한 순서에 따라 방문하는 알고리즘으로, 깊이 우선 탐색(DFS)과 너비 우선 탐색(BFS)이 있습니다.   02. 그래프의 구현 방법인접 리스트 표현각 정점과 인점한 정점들을 저장해서 그래프를 표현하는 방법으로,예를 들어 그래프의 저장 공간을 이차원 벡터로 표현한다면, 다음과 같게 됩니다.vector> adjacent;adjacent[i  03. 깊이 우선 탐색(DFS)깊이 우선 탐색은 한 정점으로부터 가장 깊은 노드까지 탐색하고, 더 이상 갈 곳이 없어지면 원점으로 돌아와 다른 노드를 탐색하는 방법으로, 다음 그림과 같이 탐색을 진행합니다.     탐색 순서: 0 -> 1 -> 3 -> (4 -> 1 -> 0) -> 2 -> 5 -> (6 -> 2 ..
[STL] string 정리 01. String  컨테이너string은 vector 컨테이너와 비슷한 컨테이너로, 시퀀스 컨테이너이며 배열 기반 컨테이너입니다.표준 C++ 라이브러리는 문자와 관련된 두 컨테이너(string, wstring)를 제공합니다.string은 char 형식의 문자를 관리하기 위한 basic_string 컨테이너의 typedef 형식이며,wstring은 유니코드 문자(wchar_t)를 관리하기 위한 basic_string 컨테이너의 typedef 형식입니다.C, C++ 문자열처럼 '\0' 문자를 요구하지 않습니다. 02. String 인터페이스생성자 string s; 기본 생성자로 s를 생성 string s(sz); sz 문자열로 s 생성 string s(sz,n); sz 문자열에서 n개의 문자로 s를 생성 ..
[STL] set, multiset 정리 이전 포스팅까지는 시퀀스 컨테이너에 대해 정리해 보았습니다. 이번 포스팅부터는 연관 컨테이너에 관한 내용을 다룰 계획입니다. 01. 연관 컨테이너 연관 컨테이너의 정의 시퀀스 컨테이너와 달리 컨테이너의 원소들을 순차적으로 삽입하지 않고, 원소 추가시 특정 정렬 기준(디폴트 less)에 의해 자동 정렬되는 컨테이너입니다. 연관 컨테이너의 종류 set multiset map multimap 연관 컨테이너의 특징 모든 연관 컨테이너는 인터페이스(생성자, 멤버 함수, 연산자)를 동일하게 사용하고 있습니다. 연관 컨테이너는 균형 이진 트리를 사용하므로, 원소를 빠르게 찾을 수 있습니다.(로그 시간 복잡도) key를 정렬 기준에 맞춰 균형 이진 트리에 저장하며, 이 key는 삽입, 검색, 제거 등에 모두 이용하고 ..
Interface 이번 포스팅에서는 Interface에 대해서 알아볼 것인데요. Interface는 추상클래스와 비슷한 개념으로, 추상 클래스에서 조금 더 심화적으로 추상화 된 개념이라고 할 수 있습니다. 추상클래스와 다른 점을 설명하자면, 1. 멤버변수는 상수형으로 선언되어야 하며 2. 다중상속이 가능하다. 라는 점입니다. 그리고 이러한 점때문에, 인터페이스를 사용하는 것인데요. Interface는 다음과 같이 정의할 수 있습니다. public interface 인터페이스명 [extends 부모인터페이스명, ...] { // 상수 // 추상 메서드 } // 예제 public interface Drwable { public static final int PLAIN_PEN = 1 public static final int ..
Toast Toast란? 사용자에게 짧은 메시지 형식으로 정보를 전달하는 팝업을 의미하며, 메시지를 표시할 공간만 차지하고 시간이 지나면 자동으로 사라지는 메시지이다. 메시지에 대한 사용자의 응답을 필요하지 않고 단순히 사용자에게 정보를 전달할 용도로 많이 사용된다. Toast 사용하기 버튼을 클릭하였을 때 메시지를 띄우는 예제 makeText() : Toast 클래스의 static 멤버 함수로, Toast 객체를 생성한다. 첫번째 인자: 현재 프로세스의 Context 정보 두번째 인자: 사용자에게 보여줄 문자열 세번째 인자: Toast 메시지를 화면에 띄우는 시간 -Toast.LENGTH_SHORT : 짧게 Toast 메시지를 표시한다. -Toast.LENGTH_LONG: 길게 Toast 메시지를 표시한다. sh..
객체지향 프로그래밍 프로그래밍을 하기 위한 언어는 여러 가지가 있는데, 이 언어들을 크게 2가지로 나눌 수 있다. " 절차지향 또는 객체지향 " 그런데 나는 절차지향과 객체지향이 어떤 것인지도 모르고 언어를 사용하고 있어서, 이번 포스팅에서는 자바를 공부하는 겸 객체지향이 무엇인지, 어떤 특징들을 가지고 있는지에 대해서 알아볼 것이다. 객체지향 프로그래밍이란? 여러 개의 독립된 단위, 즉 객체들이 주어지고 이 객체들끼리 메시지를 주고받아 데이터를 처리할 수 있게 하는 컴퓨터 프로그래밍의 패러다임 중 하나이다. 이렇게 말하면 무슨 뜻인지 정확히 안 와 닿을 수 있으니, 객체지향의 특징을 통해 설명해볼것이다. 먼저, 객체지향의 특징들을 나열해보자면 추상화, 캡슐화, 상속성, 다형성이 있다. 추상화란? 어떤 실체(객체)들에서 내..
Scanner 이번 포스팅에서는 Scanner 클래스를 이용한 입력방법에 대해 알아볼 것이다. 4) Scanner Scanner는 java.util 패키지에 속해 있는 자바의 내장 클래스로, 콘솔입력을 앞 방법들보다 쉽게 처리할 수 있게 해준다. Scanner를 이용해 입력을 받는 코드는 다음과 같다. import java.util.Scanner; // ① public class Test { public static void main(String[] args) { Scanner sc = new Scanner(System.in); // ② System.out.println(sc.next()); // ③ } } 번호 순서대로 설명하자면, ① : Scanner는 java.util 패키지에 속해있는 클래스로, 사용하려면 ja..
BufferedReader 이번 포스팅에서는 Java에서의 입력방법 중 하나인 BufferedReader에 대해 얘기해볼 것이다. 3) BufferedReader : 문자열을 읽어 들인다. 저번 포스팅에서 InputStreamReader 클래스는 고정된 길이로만 읽어야 한다는 불편한점이 있다고 하였다. BufferedReader는 사용자가 엔터키를 입력할 때까지 사용자의 입력을 전부 받아들일 수 있게 하는 클래스로, InputStreamReader의 단점을 보완해준다. 예시) 입력 : HelloWorld, 출력 : HelloWorld 그렇다면, 이제 BufferedReader을 이용해 입력을 받는 코드를 짜 보자. import java.io.BufferedReader; import java.io.InputStream; import..