본문 바로가기

728x90
반응형

전체 글

(141)
[C++/백준 1918번] stack을 사용하여 중위 표기식을 후위 표기식으로 변환 (Postfix Expression) 중위 표기식 (Infix Expression) 중위 표기식은 연산자가 피연산자 사이에 오는 연산식을 의미한다. 예를 들어 (A+B)*C처럼 우리가 흔히 사용하는 표현법이다.      후위 표기식 (Postfix Expression) 후위 표기식은 연산자가 피연산자 뒤에 오는 연산식을 의미한다. 예를 들어 중위 표기식 A+B를 후위 표기식으로 나타내면 AB+로 표기할 수 있다. 이때 연산자가 여러 개 있을 경우 먼저 오는 연산자를 먼저 계산해 준다. 예를 들어 ABC*+라는 후위 표기식이 있으면 B*C를 먼저 하고 +A를 해주면 된다.즉, 중위 표기법으로 나타내면 A+B*C와 동일하다.      중위 표기식을 후위 표기식으로 변환 중위 표기식을 후위 표기식으로 변환할 때에는 stack 자료구조를 사용하여 ..
[Java] 스레드(Thread), 모니터(Monitor), Runnable 인터페이스 스레드 (Thread) 스레드는 프로그램의 실행 흐름으로 프로세스의 내부에 존재한다. 프로세스에 비해 필요 자원이 적으며 같은 프로세스 내의 스레드 간 자원을 공유한다, Java는 멀티태스킹을 위해 멀티스레딩 방식을 사용한다. 이를 통해 유휴시간을 최소화하여 CPU의 사용률을 높일 수 있게 한다.         모니터 (Monitor) Java는 Monitor mechanism을 이용한다. Monitor란 스레드 간 상호배제(mutual exclusion)를 구현하는 동기화 구조이다. 스레드가 오브젝트 조작 시 모니터 확보를 필요로 한다. 이를 통해 특정 스레드가 모니터를 가지면 오브젝트에 락을 설정하여 다른 스레드가 해당 오브젝트에 접근할 수 없게 한다.     Main thread Main threa..
[Java] 예외 처리 (검사형 예외, 비검사형 예외) 예외 Java에서 모든 예외는 Throwable 클래스를 상속받는다. Throwable 클래스 아래에는 Error 클래스와 Exception 클래스가 있다. Error는 개발자가 처리할 수 없는 오류를 말하며 Exception은 개발자가 처리할 수 있는 오류를 말한다. Exception은 일반적인 예외와 RuntimeException의 상속을 받는 실행 예외로 나뉜다.         비검사형 예외 (실행 예외) 비검사형 예외는 예외 처리를 하지 않아도 컴파일이 가능한 예외이다. 대표적인 비검사형 예외 예외발생 이유ArithmeticException0으로 나누기와 같은 부적절한 산술 연산의 수행IllegalArgumentException메서드에 부적절한 인수를 전달IndexOutOfBoundsExcepti..
경문사 이공계 대학수학 솔루션 보호되어 있는 글입니다.
[C++] 단일 타입의 Singly Linked List 구현 Linked List linked list는 데이터를 저장하는 구조 중 하나로 여러 개의 노드가 포인터로 연결된 선형 데이터 구조이다. 해당 자료구조는 구조체(혹은 클래스) 안에 저장할 데이터와 노드를 갖고 있다.      Linked List vs Array linked list는 array와 비교했을 때 장단점이 존재한다.  먼저 장점으로는  특정 데이터를 제거하거나 저장하려고 하면 array는 항상 O(n)의 시간복잡도를 갖지만 linked list는 O(n-k)의 시간복잡도를 갖기 때문에 해당 작업에서 빠른 속도를 보인다. (최악의 경우에는 동일하다) 이때 특히 맨 앞의 데이터를 삽입하거나 제거하려고 할 때 linked list는 O(1)의 시간복잡도를 갖는다.  단점으로는 특정한 위치의 데이터에..
[Java] Iterator 인터페이스 Iterator interface Iterator interface는 컬렉션 원소에 접근하기 위한 반복자를 제공한다. 그러나 키-값 구조의 Map 컬렉션은 반복자를 제공하지 않는다. Iterator interface에는 유용한 다음과 같은 메서드가 존재한다. boolean hasNext()다음 원소의 존재 여부를 반환한다.E next()다음 원소를 반환한다.default void remove()마지막에 순회한 컬렉션의 원소를 삭제한다.   예시로 아래 코드를 확인해 보겠다. import java.util.*;public class App { public static void main(String[] args) throws Exception { Collection list = Arrays..
[Java] 컬렉션 프레임워크 (Collection Framework), List 인터페이스 (List interface) 컬렉션 (Collection) 데이터를 저장하고 관리하는 Java의 가변 크기의 오브젝트 컨테이너를 컬렉션이라고 한다. 리스트, 트리, 해쉬, 셋, 큐, 맵 등의 자료구조가 여기에 포함된다.    인터페이스 (Interface) 컬렉션 프레임워크는 인터페이스와 클래스로 구성되어 있다. 인터페이스는 클래스가 어떤 식으로 구현되어야 하는지에 대해서 클래스의 동작 규칙을 정의하는 역할을 한다.     컬렉션 프레임워크 컬렉션 프레임워크 인터페이스의 하위 인터페이스로는 List, Queue, Set 인터페이스가  있다. 컬렉션 프레임워크에는 다음과 같은 메서드들이 정의되어 있으며 이는 컬렉션 프레임워크의 상속을 받는 인터페이스에서만 사용이 가능하다. boolean add(E e)객체를 맨 끝에 추가한다.void..
[Java] package, import 패키지 (package) 패키지는 하나의 프로젝트에서 여러 개의 소스파일을 사용할 때 서로 다른 소스파일을 구분하기 위하여 사용한다.  C++이나 C#에서의 namespace와 유사한 역할을 한다고 생각하면 된다. 만약 패키지를 명시하지 않으면 Java의 기본 패키지를 사용하고 있는 것이다. 패키지는 소스코드당 한 번만 선언할 수 있으며 소스코드의 가장 첫 번째 줄에 위치해야 한다. 예를 들어 아래 코드처럼 작성된 두 개의 소스파일이 있다고 해보자. package test1;public class MyClass { } package test2;public class MyClass { }  이제 해당 프로젝트에서는 import를 통해서 같은 이름의 MyClass를 사용하는 것이 가능하다.      impo..

728x90
반응형