목록전체 글 (14)
Soongle's Morgorithm

성적우수상이라니!SSAFY(삼성 청년 SW 아카데미)에서 정말 많은 걸 배웠다. Spring과 Vue.js 같은 웹 기술을 익히고 프로젝트에 적용하면서 실력을 쌓았다. 페어와 머리를 맞대며 협업했던 기억도 나름 재밌었다. 또, 삼성 SW 역량 테스트 B형을 준비하면서 알고리즘 공부를 열심히 했는데, 문제를 더 효율적으로 푸는 요령을 익히는 데 큰 도움이 됐다. 결국 B형을 취득하고 마일리지도 받을 수 있었다. 이런 경험 덕분에 개발 과제를 할 때 자신감이 생겼다.그리고 노력의 결실로 우수상을 받았다! 상으로는 바로 하만카돈카더가든 오닉스 스튜디오 8 스피커를 받았는데, 이걸 일주일간 써보고 리뷰를 작성해본다.하만카돈 오닉스 스튜디오 8, 일주일간 써본 후기일단 시상품을 처음 받았을 때, 사이즈가 너무나도..
스트링 정의 스트링은 쉽게 설명하자면 문자열이다. 기존에 우리가 일반적인 배열을 통하여 구현하던 문자열보다 많은 기능을 지원한다. 스트링을 크게 두 가지로 나누어 설명할 수 있다. STL 자료구조로써의 String과 C++에서 문자열을 쉽게 다루도록 제작된 String 헤더함수로 설명할 수 있다. 따라서 String은 총 두차례에 걸쳐 포스팅하여 강의할 것이다. 이번 강의에서는 STL 자료구조로써의 String을 다룰 것이다. String Library(스트링 라이브러리) STL 자료구조로써의 String을 사용하고자 한다면, 앞에서 많이 다뤘던 다른 STL 자료구조와 마찬가지로 헤더를 선언하고 변수를 선언하여 사용하면 된다. 그에 대한 코드는 아래와 같다. #include string 변수명; // 스..

큐의 정의 큐(queue)는 스택과 마찬가지로 제한적으로 접근할 수 있는 나열 구조이다. 그 접근 방법은 언제나 목록의 끝(front & back)에서만 일어난다. 스택은 한 쪽 끝에서만 자료를 넣거나(back) 뺄(front) 수 있는 선형 구조(FIFO - First In First Out)으로 되어 있다. 자료를 넣는 것을 '밀어넣는다' 하여 푸쉬(push)라고 하고 반대로 넣어둔 자료를 꺼내는 것을 팝(pop)이라고 하는데, 이때 꺼내지는 자료는 가장 오래 전에 푸쉬한 자료부터 나오게 된다. Queue Library(큐 라이브러리) 스택과 마찬가지로 큐를 구현할 수 있는 방법에는 여러가지가 있다. 배열을 선언하여 만드는 방법과, 라이브러리를 호출하여 이미 구현된 큐와 그 멤버함수를 활용하는 방법이..

스택의 정의 스택(stack)은 제한적으로 접근할 수 있는 나열 구조이다. 그 접근 방법은 언제나 목록의 끝(top)에서만 일어난다. 끝먼저내기 목록(Pushdown list)이라고도 한다. 스택은 한 쪽 끝에서만 자료를 넣거나 뺄 수 있는 선형 구조(LIFO - Last In First Out)로 되어 있다. 자료를 넣는 것을 '밀어 넣는다' 하여 푸쉬(push)라고 하고 반대로 넣어둔 자료를 꺼내는 것을 팝(pop)이라고 하는데, 이때 꺼내지는 자료는 가장 최근에 푸시한 자료부터 나오게 된다. ex) 쌓아올린 접시, 웹 브라우저의 뒤로 가기 기능, 수식의 괄호 검사 (자료 출처 - 위키백과) Stack Library(스택 라이브러리) 스택을 구현할 수 있는 방법에는 여러가지가 있다. 배열을 선언하여 ..
벡터의 정의 벡터(std::vector)는 동적 배열 구조를 C++로 구현한 것이다. 이것은 C의 배열(빠른 랜덤 접근이 가능한)처럼 행동하지만 자동으로 배열의 크기 조절과 객체의 추가와 삭제가 가능하다. 벡터는 C++ 표준 템플릿 라이브러리 중의 하나인 템플릿 클래스이다. 어떤 타입이라도 저장할 수 있지만, 한 번에 한 타입만 저장이 가능하다. 요소에 접근하거나, 앞 또는 뒤에 요소를 추가하거나 삭제할 수 있고 크기를 알 수 있는 멤버 함수를 제공하고 있다. (일반 배열과 구동이 매우 유사하므로 따로 그림은 삽입하지 않겠다.) Vector Library(벡터 라이브러리) 벡터또한 스택과 큐와 마찬가지로 STL의 자료구조 중 하나이다. 따라서 헤더와 변수를 선언하는 것이 매우 유사하다. 벡터 헤더 선언과..

DP(동적계획법)란 복잡한 문제를 간단한 여러 개의 문제로 나누어 푸는 방법을 말한다. 두 가지 방법으로 문제를 해결할 수 있는데, Top-down은 가장 큰 문제를 나누어 작은 문제를 호출해 답을 찾는 방식이고 Bottom-up은 가장 작은 문제들 부터 답을 구해가며 전체 문제의 답을 찾는 방식이다. Top-down 방식은 재귀함수를 이용해 구현한다. 예를 들어, 피보나치 함수를 f(n) = f(n-1) + f(n-2), f(1) = 1, f(2) = 1 위와 같은 점화식으로 세웠을 때 Top-down 방식으로 코드를 구현하면 다음과 같다. int f(int n) { if(n