본문 바로가기

728x90

전체 글

(58)
[Dart] 동기(Synchronous) / 비동기(Asynchronous) 1. 개요Dart 에서는 비동기로 구현할 수 있는 문법이 존재한다. 서비스를 개발할 때 수없이 구현해왔지만 사용방법만 익혔을 뿐 그 의미를 정확히 알고 사용하지 않았기에 이번 기회에 확실하게 파악해보고자 한다.2. 개념 이해2.1. 동기와 비동기동기와 비동기는 다음을 의미한다.동기(Synchronous): 작업이 순차적으로 실행되며, 하나의 작업이 완료된 후 다음 작업을 시작함비동기(Asynchronous): 여러 작업을 동시에 진행할 수 있으며, 한 작업이 완료되기를 기다리지 않고 다음 작업을 수행함BOJ 문제를 해결하는 코드나 계산 작업을 하는 코드 등은 충분히 동기적으로도 구현 가능하지만 다양한 사용자가 존재하고 지속적으로 서버와 소통해야 하는 서비스를 개발할 때는 특정 작업의 결과값을 즉시 얻지 ..
[Baekjoon] 1262번 알파벳 다이아몬드 S1 <Short> 1262번 - 알파벳 다이아몬드1. 문제알파벳 다이아몬드는 정수 길이의 마름모가 여러 개 누적되는 모양이다. 각각의 마름모는 하나의 알파벳 소문자로 그리며, a로 시작해서 z로 끝난다. (가운데에서부터) 그리고, z 이후에는 다시 a로 시작한다.알파벳 다이아몬드는 다음과 같이 생겼다.a.b.bab.b...c...cbc.cbabc.cbc...c.....d.....dcd...dcbcd.dcbabcd.dcbcd...dcd.....d.......e.......ede.....edcde...edcbcde.edcbabcde.edcbcde...edcde.....ede.......e.........f.........fef.......fedef.....fedcdef...fedcbcdef.fedcbabcdef.fedcbcd..
[Algorithm] 깊이 우선 탐색 (Depth First Search) 15723번 - n단 논법1. 문제모든 중앙대 컴퓨터공학부(소프트웨어학부) 학생들은 미인이다.지무근은 중앙대 컴퓨터공학부 학생이다.그러므로 지무근은 미인이다.위 연역 논증은 대표적인 삼단논법의 예시이다. 삼단논법이란 전제 두 개와 결론 하나로 이루어진 연역 논증이다. 이것을 응용하면, $n$ 개의 전제가 있을 때 $m$ 개의 결론을 도출할 수 있을 것이다. 이때의 $n$과 $m$은 모든 의미에서 적절한 수라고 가정하자. 자세한 것은 입출력 예시를 확인하자.Input첫째 줄에 정수 $n(2 \le n \le 26)$ 이 주어진다.둘째 줄부터 $n$개의 줄에 걸쳐 각 줄에 전제가 하나씩 주어진다. 전제는 모두 a is b의 형식으로 주어지며 a와 b는 서로 다른 임의의 알파벳 소문자이다. 특별한 명시는 없지..
[Algorithm] 너비 우선 탐색 (Breadth First Search) 1. 개요너비 우선 탐색 (Breadth-First Search) 은 비선형 자료를 특정 노드에서 시작하여 하위 노드보다 인접 노드를 먼저 방문하며 탐색하는 방식을 의미한다.2. 의의너비 우선 탐색 은 다음의 경우에 유용하게 사용될 수 있다.너비 우선 탐색의 의의최단 경로 탐색층별 탐색최소 신장 트리 판단3. 조건너비 우선 탐색의 조건비선형 자료 (그래프, 트리) 의 탐색추가 메모리 공간 (자료 구조 Queue 사용)탐색 시작 지점 정의방문 여부 확인4. 구현너비 우선 탐색 은 반복문과 Queue 를 이용하여 구현할 수 있다.탐색 시작 노드를 설정하고 Queue 에 삽입한다.Queue 를 dequeue 하여 얻은 노드를 탐색한다.탐색을 완료한 노드를 기록한다.현재 탐색 노드의 인접 노드들을 Queue 에..
[Baekjoon] 15723번 n단 논법 S1 15723번 - n단 논법1. 문제모든 중앙대 컴퓨터공학부(소프트웨어학부) 학생들은 미인이다.지무근은 중앙대 컴퓨터공학부 학생이다.그러므로 지무근은 미인이다.위 연역 논증은 대표적인 삼단논법의 예시이다. 삼단논법이란 전제 두 개와 결론 하나로 이루어진 연역 논증이다. 이것을 응용하면, $n$ 개의 전제가 있을 때 $m$ 개의 결론을 도출할 수 있을 것이다. 이때의 $n$과 $m$은 모든 의미에서 적절한 수라고 가정하자. 자세한 것은 입출력 예시를 확인하자.Input첫째 줄에 정수 $n(2 \le n \le 26)$ 이 주어진다.둘째 줄부터 $n$개의 줄에 걸쳐 각 줄에 전제가 하나씩 주어진다. 전제는 모두 a is b의 형식으로 주어지며 a와 b는 서로 다른 임의의 알파벳 소문자이다. 특별한 명시는 없지..
[Baekjoon] 1022번 소용돌이 예쁘게 출력하기 G3 <Short> 1022번 - 소용돌이 예쁘게 출력하기1. 문제크기가 무한인 정사각형 모눈종이가 있다. 모눈종이의 각 정사각형은 행과 열의 쌍으로 표현할 수 있다.이 모눈종이 전체를 양의 정수의 소용돌이 모양으로 채울 것이다. 일단 숫자 1을 0행 0열에 쓴다. 그리고 나서 0행 1열에 숫자 2를 쓴다. 거기서 부터 소용돌이는 반시계 방향으로 시작된다. 다음 숫자는 다음과 같이 채우면 된다. -3 -2 -1 0 1 2 3 ---------------------3 |37 36 35 34 33 32 31-2 |38 17 16 15 14 13 30-1 |39 18 5 4 3 12 29 0 |40 19 6 1 2 11 28 1 |41 20 7 8 9 10 27 2 |42 21 22 23 24 ..
[Design Pattern] 반복자 (Iterator) 패턴 1. 개요반복자 디자인 패턴 (Iterator Design Pattern)은 컬렉션(Collection) 객체의 내부 구조에 상관없이 요소(element)들을 순차적으로 접근하고 싶을 때 사용되는 패턴이다.2. 조건요소들을 반복적으로 탐색하고자 할 때컬렉션 객체의 내부 구조에 대한 세부 정보를 노출시키지 않고자 할 때3. 다이어그램3.1. 설명Iterator요소에 순차적 접근을 허용하는 인터페이스를 정의한다.다음 요소를 반환하는 next() 메소드가 있다.다음 요소의 존재 여부를 확인하는 hasNext() 메소드가 있다.ConcreteIteratorIterator 인터페이스의 구현 클래스이다.컬렉션 객체의 내부 구조에 맞추어 요소들을 반복하고 관리한다.AggregateIterator를 생성하는 인터페이스..
[Project] Keep 1. 개요이전의 [Project] Tico & Tico Simulator 포스팅에 이어 또 다른 과제를 소개하고자 한다. Open-Source Software Lab (OSSL) 수업의 과제였는데 버전관리시스템(VCS) 에 관한 과제였다. 학습한 Git 의 동작원리와 사용방법을 토대로 해당 프로그램을 제작하라.하지만 대략적인 과제의 내용은 위와 같았고 나를 포함한 대다수의 학생에게 해당 내용은 다소 충격적이게 다가왔다. OSS 수업은 교수님에 따라 크게 두 분반으로 나뉘었는데 당시 학생들 사이에서 "너네는 Git 배우냐? 우리는 Git 만든다" 와 같은 말을 실소와 함께 주고받는 모습을 기억한다. 하지만 겉보기에 무시무시했던 이 과제는 교수님의 여러 조건들 덕분에 결론적으로 할 만 했던 과제가 되었다. ..

728x90