java에서 static 필드에 대해서 배웠습니다. 그러면, 함수 앞에도 static을 붙일 수 없을까요? 이를 정적 함수, 혹은 static 함수라고 하는데요. 예를 들어보겠습니다. 저는 myClass 클래스를 선언했습니다. 그리고, main 함수에서 myClass.foo()를 호출하고 있습니다. 그래도 될까요? 네. 일단 된다고 합니다. 일반 메서드와 다른 것은, 일반 메서드 (instance method) 는 객체.xxx(); 로 호출을 했습니다. 그런데, 이것은 class 이름.xxx();로 호출을 했다는 점이 다릅니다. 이게 왜 그렇게 될 수 있는지는 나중에 다시 이야기 해 드리도록 하겠습니다. 지금은 그냥, 아. 클래스 이름.함수명() 으로 호출할 수 있는 게 정적 함수구나. 정도만 짚고 넘어..
전체 글 검색 결과
greedy는, 욕심쟁이라는 뜻입니다. 이름에 걸맞게, 매 순간 제일 매력적인 해를 택하는 방법입니다. 그런데 그게 best한 답일까요? 답은 그럴 수도 있고 아닐 수도 있다는 것입니다. 오늘은 이러한 approach로 풀 수 있는 문제 중에서 쉬운 문제만 소개해 드리도록 하겠습니다. 작업 n개가 주어집니다. 이들을 끝내는 데 걸리는 시간이 있습니다. 각각 T(1), ... ,T(n)이라고 합시다. 우리는 제한시간 limit 내에 최대한 많은 작업을 끝내려고 합니다. 어떻게 하면 좋을까요? 직관적으로 생각했을 때, 선택하지 않은 작업들 중에서, 소요 시간이 제일 짧은 작업들을 매 순간마다 선택하면 될 거 같습니다. 그러면 T 배열을 정렬하면 될 겁니다. 예를 들어 T = [2, 5, 1, 3, 7] 이라..
안녕하세요. chogahui05입니다. 함수 잘 만드는 거. 상당히 중요합니다. 구현을 잘 하기 위해서는 모듈화가 중요합니다. 기능을 어떻게 잘 함수로 뺄 지가 중요합니다. 우리가 쉽게 생각할 수 있는 strlen이나, strcat을 생각해 봅시다. 만약에 그 기능들이 모두 main 함수 안에 구현이 되어 있다면 어떨까요? 생각만 해도 끔찍할 겁니다. 물론 1~2줄밖에 되지 않겠지만요. 그러면 문제를 보고 기능을 어떻게 잘게 나누느냐가 중요하다는 것인데요. 오늘은, 백준 문제들 중에서, 어떻게 기능을 나눌 수 있는지만 간단하게 연습해 보도록 하겠습니다. 강의용 예제 코드는 제 github의 BOJ 폴더의 17495_example.cpp입니다. 당연하게도 4444 문제를 찍기 위해서 급하게 작성된 코드이기..
저번 시간에 포인터 변수에 대해 배웠습니다. 오늘은 구조체 포인터를 써 보도록 하겠습니다. 사실, 링크드 리스트 구현할 때 상당히 많이 쓸 거에요. 예를 들어서 p->next? 아니면 p->prev? 이런 식으로 많이 쓰실 건데요. ->가 무엇인지도 오늘 알아보도록 하겠습니다. 먼저 main 함수 안에 point형 구조체 변수가 선언이 되어 있다고 해 봅시다. 8번째 줄에 point형 지역 변수인 p를 선언했습니다. 그러면 메모리에는 위와 같이 할당이 될 겁니다. 맞나 모르겠네요. 그러면, 메모리의 어느 위치에, p를 위한 공간이 만들어 진 거에요. 역참조도 할 수 있을까요? 주솟값만 알고 있다면, 그것을 통해서 간접 참조를 할 수 있을 텐데요. 9번째 줄을 보면, t에 p의 주솟값을 넣고 있습니다. 그..
레퍼런스 사이트에서 보면, unordered_map의 insert나 delete나 find 함수는 평균적으로 O(1)이라고 나와 있습니다. 그런데, 최악의 경우, O(n)이라고 나와 있습니다. [관련글] 해쉬 테이블의 평균 복잡도를 분석해 봅시다. 왜 최악의 경우에 O(n)일까요? 이유는 간단합니다. Chaining 방식이 List이기 때문입니다. 그러면, 왜 최악의 경우에 선형 시간이 걸리는지는 해결이 된 셈입니다. 하나의 버킷에 좌르르륵 skew가 되어 있으면 List의 경우에는 계속 찾아야만 하니까 O(n)이 걸립니다. 그런데, 아무리 최악의 경우가 O(n)이라고 한다면, 저격 데이터를 만드는 게 굉장히 어렵다면 사실 그냥 써도 무난할 겁니다만. 생각보다 충돌이 극단적으로 일어나는 데이터를 만드는 ..
최근댓글