본문 바로가기

분류 전체보기

(35)
20.04.03 백준에서 푼 문제 깃에 자동 추가 2 첫 번째 백준에서 풀었던 문제들을 깃에 자동 추가하는 프로젝트가 과거에 풀어져 있던 문제들을 깃에 추가하는 프로젝트 였다면, 바로 이어서 시작한 두 번째 프로젝트는 푸는 문제마다 깃에 추가하는 프로젝트를 진행했다. 처음에는 문제를 제출하면 자동으로 백준 사이트를 몇 분에 한 번씩 크롤링 하면서 코드를 추가할 예정이였다. 그러나 첫 프로젝트를 하면서 로그인을 하지않으면 코드를 볼 수 없고, 프로그램으로 로그인하는 것이 리캡챠로 막혀있기 때문에 딱히 떠오르는 방법이 없어서 프로그램을 실행 해둔 뒤, 명령어를 주면 백준에서 가장 최근에 맞은 문제 번호를 크롤링해와서 내가 IDE에서 푼 코드를 문제 번호를 파일명으로 파일을 생성한다. 그리고 그 파일을 깃에 추가하고 커밋까지 자동으로 해두고, 푸시명령어를 받아서..
20.03.29 백준에서 풀었던 문제들 깃 허브에 자동 추가 처음으로 과제라던가 공모전이 아닌 나 스스로 필요한 프로그램을 만드는 프로젝트를 진행했다. 물론 파이썬과 크롤링에 대해 공부하기 위해 시작한 것은 맞지만 강제성이 없고 내 편의를 위한 개발은 코딩하는 내내 즐거웠다. 파이썬과 크롤링에 덤으로 깃 허브에 대한 이해도도 증가했으니 굉장히 만족스러운 프로젝트 였다. 그리고 처음으로 C, C++로 개발하지 않은 프로젝트이다. 그래도 난 C가 편해... 물론 파이썬의 정말 맛보기 수준이였고, 크롤링api도 하나씩 찾아보면서 코딩했지만 주변 친구들이 크롤링으로 신기한 프로그램들을 만드는게 신기했는데, 역시 노가다를 열심히 하면 별로 어렵지 않구나 라는걸 깨달았다. 백준사이트같은 경우에는 프로그램에의한 로그인이 리캡챠로 막혀있어서 살짝 고민했지만 '역시 컴퓨터가 못하..
1. Hello World! 대부분의 C언어 책을 보면 'Hello World!' 라는 문구를 볼 수 있을 것이다. C언어를 만든 데니스 리치가 처음 C를 발표 할 때 사용한 것으로 알고 있는데, 때문에 대부분 첫 페이지에 많이들 사용하는 것같다. 우리도 따라서 한 번 Hello World! 를 출력해보도록 하자. C언어를 처음 배우면서 쓰게되는 기본적인 출력문이다. C언어에서 세미콜론(;)은 한 문장의 끝을 알리며 명령어를 실행 할때마다 ;을 찍어줘야 한다. 한 번씩 출력해보고 뒤에 내용을 배우면서 어떻게 사용하는 것인지 알아보자.
프로그래밍 언어의 기본 C 나의 프로그래밍 입문 언어이며 내가 가장 많이 배우고 많이 사용(이라기는 문제풀이정도?)하는 언어이다. 첫 언어라 재밌게 배웠던 기억도 있고 학원에서 수업을 하면서 스스로 배운것들도 엄청나게 많다. 학교에서 프로그래밍수업 2학기와 자료구조, 알고리즘 그리고 리눅스 시스템 프로그래밍이라는 수업을 들으면서 꽤 자신있다고 생각하는 언어이다. 사실 구현되어있는게 거의 없다보니 모든 구현을 직접해야하는 불편함이 있지만, 가장 베이스에 있는 언어 느낌으로 다른언어를 배우는 것보다 컴퓨터 친화적(?)으로 배울 수 있다. 그래서 학원에서 가르쳤던 것들을 위주로 직접 C언어 교재(?)를 작성해보고자 한다. https://mingnine9999.tistory.com/11 1. Hello World! 대부분의 C언어 책을 ..
STL algorithm 편 2. min, max, minmax, (+_element) min, max는 정말 이름 그대로의 함수이며 c++에서 std를 선언하면 min, max를 변수명으로 사용 할 수 없는 이유이다. 에 정의되어 있으며 std안에 정의 되어 있으므로 std를 선언해야 한다. min()은 두 개의 값중 더 작은 값을 반환하고 max()는 큰 값을 반환한다. 즉 min(a, b) == a > b ? b : a 이고 max(a, b) == a > b ? a : b 이다. (실제로 이렇게 구현되어 있다.) 그리고 최신버전 c++(17인가 부터)에서는 2개 값이 아닌 더 많은 값도 처리 할 수 있게 되었는데, 함수인자에 min({ a,b,c,d }) 처럼 초기화 하는 형식으로 중괄호를 넣어주면된다. 또한 compare함수를 작성하여 추가 할 수 있는데, 크고 작음을 어떤 방식으로..
STL algorithm 편 1. sort, stable sort sort는 STL에 구현되어 있는 정렬이다. 헤더파일에 정의되어 있으며 std안에 있으므로 std를 선언해야 사용 할 수 있다. 이 정렬은 N*logN 정렬이며 퀵소트로 알려져 있지만 정렬될 배열의 크기에 따라 달라지는 것으로 알고있다. (어디서 주워들었음) sort()의 인자는 두 개 또는 세 개의 인자가 포함되는데, sort(first, last) 또는 sort(first, last, func)의 형식이다. 이 때, first와 last는 각각 정렬 될 배열의 첫 번째 주소값(또는 iterator)과 마지막 주소값(또는 iterator)이고 [first, last)범위 즉 last를 제외한 last - first개의 원소들이 정렬된다. 또한 func는 정렬을 하는 방식을 함수로 지정해 줄 수 있으며 ..
STL Container 편 3. stack, queue, deque, priority_queue stack, queue, deque, priority_queue(heap)는 자료구조에서 배운 그대로의 기능을 갖추고있다. 따라서, 각각 자료구조의 개념과 함수만 알고 있다면 충분히 활용도가 높다. 각각 #include 해야 사용 가능하며 이 들 역시도 namesapce std안에 있다. stack s 는 s.push(), s.pop(), s.top(), s.size(), s.empty() 가 있고 queue q 는 q.push(), q.pop(), q.front(), q.size(), q.emtpy() 로 스택과 top(), front()의 차이만 있다. deque은 double ended - queue의 줄임말로 큐의 양 쪽 끝이 모두 push, pop이 가능한 자료구조이다. 따라서, push(), ..
STL Container 편 2.list와 iterator list는 다들 알고있는 링크드리스트이다 #include 를 포함해야하며, 역시 std가 필요하다 list의 형태로 선언하며 list는 []연산에의한 임의접근을 할 수 없기 때문에, iterator라는 친구를 잘 알아야 한다. list는 기본적으로 더블링크드리스트이며 원형링크드리스트는 따로 지원하지 않기 떄문에 직접 구현해줘야 한다. list를 쓰기위한 iterator를 알아보자! 일단 iterator(반복자)는 리스트에만 쓰이는 것이 아니라 모든 STL Container에 사용되며 포인터와 매우 유사한 기능과 형태를 갖고있다. iterator변수는 list::iterator iter 형식으로 선언하며 데이터는 list의 함수에서 받아 사용 할 수 있다. list L이라는 리스트가 있다고 하면 L.beg..