일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 브루트포스
- 컴공
- 구현
- 정석학술정보관
- 정석
- 컴퓨터공학과
- DP
- 너비우선탐색
- 오에스
- 백준
- bfs
- 컴공과
- 코딩
- 자료구조
- 북리뷰
- Stack
- vector
- 스택
- 문제풀이
- 오퍼레이팅시스템
- 알고리즘
- Operating System
- 개발
- cs
- 코테
- c++
- coding
- Computer science
- OS
- 그래프
- Today
- Total
목록Univ/Study (8)
Little Jay
http://www.kmooc.kr/invitation-banner | K-MOOC www.kmooc.kr 이전에 올렸던 Udemy와 비슷하게 Kmooc에서 Coursera도 지원해준다. 구독권이기 때문에 TO가 나야 받을 수 있고, 자리가 나면 이메일 혹은 문자로 링크가 오기 때문에 천천히 기다리면 될 것 같다. 아마 방학시즌이라 학생들이 많이 듣고 있어서 자리가 나지 않을 수도 있는 가능성을 열어두자.

최근에 알고리즘 수업을 들으면서 Kruskal Algorithm을 기반으로 한 Strongly Connected Component를 구하는 과제를 수행했었다. DFS를 두번 수행하는 이 알고리즘은 구현의 난이도가 Tarjan's Algorithm보다 쉽기때문에 인터넷에 많이 올라와 있었다. 그래서 내 코드의 표절률에 대해 궁금해졌고, 비교군의 파일 하나와 내 코드를 비교해보았다. 이 방식은 인도인 유튜브에 있는 방식을 한글로 받아 적고, 다른 곳에서 정리된 것을 내가 모은 것임을 알리고 시작한다. https://www.youtube.com/watch?v=5CyOTf2DHSg 먼저 moss@moss.stanford.edu 에게 메일을 보내야한다 제목은 상관없고 본문에 registeruser mail 자기이..
#include #include #include #include #include #define ITER 1000 void *thread_increment(void * arg); void *thread_decrement(void * arg); int x; sem_t s; int main() { pthread_t tid1, tid2; sem_init(&s, 0, 1); pthread_create(&tid1, NULL, thread_increment, NULL); pthread_create(&tid2, NULL, thread_decrement, NULL); pthread_join(tid1, NULL); pthread_join(tid2, NULL); if (x != 0 ) printf("boom! counter..
객체 지향의 원칙들 단일 책임 원칙 (Single Responsibility Principle) 개방 폐쇄 원칙 (Open-closed Principle) 리스코프 치환 원칙 (Liskov Substitution Principle) 인터페이스 분리 원칙 (Interface Segregation Principle) 의존 관계 역전 원칙 (Dependency Inversion Principle) Single Responsibility Principle 모든 클래스는 단 한가지의 책임만을 갖고 클래스 안에 정의되어 있는 모든 기능은 이 하나의 책임을 수행하는데에 집중되어야 한다 즉,하나의 클래스로 너무 많은 일을 하지 말고 한 가지의 책임만 수행하라는 뜻이다. Open/Closed Principle 클래스는 ..
C++을 하다보면 내가 의도하지 않은 대로 컴파일되어 코드가 실행되는 경우가 있다. 개인적으로 생각할 때 for 반복문에서 조건 설정할 때 생각지도 못한 부분에서 실수를 많이 해 여기에 포스팅 해본다. #include #include using namespace std; int main() { string s = "aa"; for (int i = 0; i < s.length() - 3; i++) { cout
vector container을 사용할 때 대부분 push_back()을 사용한다. 직관적으로 vector 컨테이너에 원소를 위에 삽입한다라는 의미이다. 그러나 push_back()함수에는 문제점이 존재한다. push_back() 함수는 '객체'를 집어넣는 형태이므로, 원형은 아래와 같다. void push_back (const value_type& val); void push_back (value_type&& val); emplace_back()도 동일하게 컨테이너 마지막에 '객체'를 삽입하는 기능을 수행한다. push_back()쪽을 먼저 본다면 push_back()은 rvalue, 즉 임시객체가 필요하다. 그렇기 때문에 push_back()이 어떻게 동작을 하나면, 인자로 필요한 객체를 생성 후 p..

Clion을 사용하면서 재미있는 부분을 발견했습니다. 오른쪽에 IntelliSense가 추천해주는 코딩 스타일에서 [[nodiscard]]를 사용하는것이 권장된다고 나와있습니다. 함수앞에 [[nodiscard]]를 붙일 수 있는데 이런것을 Attribute라고 합니다. 처음보는 스타일에 당황하긴 했지만 C++ 11부터 이런 스타일을 지원했으며, 컴파일시 최적화 부분에서 이를 유용하게 사용할 수 있겠습니다. 본 포스팅에서는 이 Attribute에 대해 정리 해보겠습니다. Attribute 직역하면 속성이라는 의미이다. C++ 전역에서 사용이 가능하며(유형, 변수, 함수, 이름, 코드 블록 앞에서 사용 가능), 이는 컴파일할때 특정 메세지를 생성하거나 컴파일러가 특정 동작을 수행할 수 있게 해줍니다. 이는 ..
객체 지향의 기둥 추상화(Abstraction) 캡슐화(Encapsulation) 상속(Inheritance) 다형성(Polymorphism) 1. Abstraction 파이썬 코드를 짤때는 추상화를 잘 설명을 해야합니다. 추상화는 이미 파이썬 자체에서 잘 되어있다고 볼 수 있을 것 같습니다. 이게 무슨 뜻이나면, 우리가 list 메소드를 쓸 때 append나 del 같은거는 처음 봤을 때 뭔지 모릅니다. 우리가 문법을 배워서 알면 되지만 처음 봤을때는 이게 어떤 뜻인지는 모르는것이죠. 하지만 이것이 대략적으로 어떤 기능을 하는지 직관적으로 유추를 할 수 있겠습니다. 우리가 사용자 정의의 클래스나 함수를 새로 만들었다면 우리의 코드를 읽는 다른 사람은 그게 정확히 뭘 의미하는지, 어떤 기능을 하는지 한눈..