안녕하세요. chogahui05입니다. 인성에서 100%의 확률로 떨어지다 보니 제 인성에 문제가 있는 듯 싶어요. 셀프 깍기는 밴이고요. 오늘은 좀 유명한 게임을 다뤄볼 것인데요. quento라고, n개의 숫자와 n-1개의 연산자를 조합해서 특정한 수 m을 만들어야 합니다. 이 때, 한 번 방문한 칸은 다시 방문할 수 없고, 인접한 칸으로만 이동이 가능합니다. 예를 들어 봅시다. 7 밑에 네모가 2개 있어요. 이는 수는 2개, 연산자는 하나를 사용 해야 한다는 이야기입니다. 그러면 (0,0)에서 출발해서 오른쪽으로 가면 될 거에요. 5 + 2 = 7이기 때문입니다. 이번에는 11을 만들어야 하는데요. 사용해야 하는 숫자의 갯수는 3개, 연산자는 2개입니다. 7+4도 답은 됩니다. 하지만, 사용한 숫자의..
전체 글 검색 결과
배열이랑 포인터의 관계를 들어가기 전에, 하나만 짚고 넘어가겠습니다. 배열과 포인터는 같은 개념일까요? 결론부터 말하면 아닙니다. 따라서, 배열 이름을 상수 포인터라고 한 것은, 올바른 표현이 아닙니다. 후자는 아래와 같이 선언된 것을 의미합니다. address 값을 저장하기 위한 별도의 변수가 5번째 줄에 선언이 되어 있습니다. 예제 1을 봅시다. 5개의 원소를 저장하고 있는 배열 arr을 선언했습니다. 그리고 어떠한 공간을 가리키는 int형 포인터 변수인 p를 선언했어요. 그리고 p가 가리키고 있는 데이터를 출력하는 간단한 프로그램입니다. 4번째 줄을 보시면, arr을 선언했습니다. 그러면 메모리 상에 다음과 같이 할당될 겁니다. 그런데, 배열이던, int형이던, double형이던, 메모리의 어디에 ..
저번 시간에는 그리디 알고리즘의 기초 문제를 다루어 보았습니다. 오늘은 피보나치 수열을 해 보도록 하겠습니다. 이 친구를 언급하기 전에, 일반항을 먼저 구해보도록 하겠습니다. 왜냐하면, 오늘 하는 내용과, 어느 정도 맞아 떨어지기 때문이에요. 먼저 피보나치 수열은 아래와 같은 관계식을 가집니다. a(0) = a(1) = 1 a(n) = a(n-1) + a(n-2) if n>=2 여기까지만 보면 크게 어려울 건 없어 보입니다. 그러면 어떻게 일반항을 구할까요? 2번째 식을 잘 변형해 봅시다. a(n) - a(n-1) - a(n-2) = 0 그러면 위와 같이 되는데요. 이를 (3)이라 합시다. 아래 꼴로 변형해 봅시다. 이걸 (4)라고 합시다. a(n) - ta(n-1) = k(a(n-1) - ta(n-2)..
java의 toString 메서드는, 객체의 정보를 리턴하는 역할을 합니다. 사실 이 부분에 대해서 저는 별로 중요하게 생각을 하지는 않았습니다. 이걸 보면 아직도 멀었다는 생각이 듭니다. 하여튼, Object의 정보는 언제 볼까요? 당연하게도, 디버깅을 할 때 어디서 잘못되었는지 보기 위해서 볼 겁니다. 기본적으로, 자바에서, 최상위 부모는 Object입니다. 따라서, 클래스에 toString이 override가 되어 있지 않으면, Object에 있는 toString을 부르게 됩니다. 이 함수를 봅시다. 그러면 뭔가 getClass().getName()에 @을 concat를 하고, hashCode값을 16진수화 시킨 것을 또 concat 한다는 것을 알 수 있어요. myClass 클래스를 선언하였습니다..
포인터의 증감 연산을 간단하게 다루어 보도록 하겠습니다. 포인터 변수의 값 + 값 먼저, 이 경우부터 보도록 합시다. 아래 프로그램을 생각해 봅시다. int형 변수 a가 선언되었습니다. 그리고 p는 int형 포인터 변수입니다. p는 a의 주솟값을 가지고 있어요. 그러면, p, p+1, p+2는 각각 어떤 값이 나올까요? 4만큼 차이나는 것을 볼 수 있어요. p+1은, p로부터 4바이트, p+2는 p+1로부터 4바이트만큼 증가한 것을 볼 수 있는데요. 자료형의 크기만큼 더했다는 것을 볼 수 있어요. long long형이면 어떨까요? sizeof(long long)의 값도 같이 출력해 봅시다. 처음에 size = 8이 나왔습니다. 해당 환경에서, long long형은 8byte만큼 차지한다는 의미입니다. 이..
최근댓글