거듭 제곱 구하기 우리가 사용하는 C 혹은 C++, 비주얼 베이직 같은 프로그램 언어들은 각자 사용하는 자료형을 가지고 있고 자료형들은 일정한 크기를 갖는다. 따라서 이 자료형을 이용하여 큰 수 혹은 자료를 계산하는데는 한계가 있다. 이번 문제에서는 큰 수의 처리에 관한 학습을 하고자 한다. 문제 ( 난이도 ★★★☆☆ ) 컴퓨터는 복잡한 계속을 빠르고 쉽게 해결해 준다. 그런데 숫자가 매우 커지면 문제가 발생한다. 예를 들어 여러분이 만약 프로그램에서 Visual C++을 사용한다면 int 형 변수는 10자리 이상을 표현하지 못한다. 다른 프로그램 언어도 마찬가지로 자료형마다 표현 할 수 있는 최대 크기가 정해져 있다. 그렇다면 10자리 이상 혹은 매우 긴 자리 이상의 계산은 어떻게 할 수 있을까. 예를..
Hamilton Circuit 해밀턴 회로는 모든 정점을 방문하여 처음 출발점으로 돌아 오는 회로이다. 해밀턴 회로를 사용하려면 일단 그래프를 배열로 표현해야 한다. 만일 다음과 같은 그래프가 있다고 하자 그래프는 2차원 배열로 나타내게 된다. 간선이 연결된 곳은 1, 그렇지 않은 곳은 0으로 저장한다. 위의 그래프를 배열로 표현하면 다음과 같다. 1 2 3 4 1 0 1 1 0 2 1 0 1 1 3 1 1 0 1 4 0 1 1 0 해밀턴은 정점을 두 번이상 방문하지 않아야 하므로 처음 false 로 해두었다가 한번 방문하면 true로 바꾸어 정점을 체크하는 것만 오일러 코드에 추가하면 해밀턴 코드가 된다. 해밀턴 회로에 대한 입력 예제가 다음과 같다. 입력 4 5 1 2 1 3 2 3 2 4 3 4 출..
이번엔 데큐라는 것에 대한 포스팅입니다. 쉽게 설명하자면 데큐는 큐를 발전시킨건데 앞뒤로 입력이 가능한 구조 입니다. --------------------------------- → ← ← → --------------------------------- 백번 설명하는 것 보다 직접 해보시는게 더 빠를거예요. push_back(원소)는 원소를 뒤에 삽입한다는 것이고 pop_front(원소)는 가장 앞의 원소를 삭제한다는 것입니다. front()는 가장 위의 원소이고 empty()는 데큐 안이 비었는지 확인하는 함수입니다. 아 참고로 deque는 헤더파일이 따로 있으므로 #include가 꼭 필요하고 using namespace std 역시 필요하다는 것을 잊지 마세요. 입력예제 5 1 1 1 0 0 0 0..
[초등부] 기말 고사 준비 정보 올림피아드 문제에서 가장 쉽게 접할 수 있는 문제는 최적해를 구하는 것이다. 최적해를 구하는 것은 발생할 수 있는 모든 경우를 고려한 후 답을 구할 수 도 있지만, 수행 시간 문제가 발생한다. 이번 문제에서는 최적해 문제의 해결에 접근하는 방법을 학습 하고자 한다. 문제 ( 난이도 ★★★☆☆ ) 인표는 기말 고사를 앞두고 있다. 지난 중간고사 때 감기몸살로 공부를 제대로 하지 못해 성적이 저조했다. 그래서 인표는 기말고사를 더욱 중요하게 생각하고 있다. 그러나 불행히도 인표에게 주어진 시간은 그리 많지 않다. 인표는 자신에게 주어진 시간을 최대한 효율적으로 사용하여 기말고사에서 최대의 효과를 보려고 그 동안의 경험과 친구들의 조언을 토대로 다음과 같은 표를 만들어 보았다...
문제와 소스 모두 첨부파일에 있습니다.
/* 0. 함수 포인터(변수)가 무엇 ? 포인터에 대해서 처음 배울 때 데이타에 대한 포인터를 배우고 주로 이들 포인터에 대하여만 다루어왔기 때문에 아마도 함수 포인터에 대해서는 낮설을 수 있다고 생각합니다. 일단 포인터라는 것은 메모리의 어떤 위치를 가르키는 주소라는 것에 유념한다면 함수에 대한 포인터도 낯설 것이 없다고 봅니다. 데이타에 대한 포인터는 데이타들이 위치하는 메모리의 데이타 영역에 대한 주소이고 함수에 대한 포인터는 함수의 코드가 위치하는 메모리의 코드 영역에 대한 주소라고 볼 수 있습니다. 포인터 변수는 이러한 포인터를 저장하는 변수라고 볼 수 있습니다. 주소라는 것이 실제로 정수이므로 정수데이타 형과 구분하기 위하여 *라는 것을 데이타형의 뒤에 덧붙입니다. 마찬 가지로 정수형 데이탸에..
조건 1 : 벽돌은 회전시킬 수 없다. 즉 옆면을 미틍로 사용 할 수 없다. 조건 2 : 탑을 쌓을 때 밑면이 좋은 벽돌 위에 밑면이 넓은 벽돌을 놓을 수 없다. 같은 넓이의 벽돌은 놓을 수 있다. 조건 3 : 무게가 무거운 벽돌을 무게가 가벼운 벽돌 위에 놓을 수 없다. 무게가 같은 벽돌은 놓을 수 있다. 입력 첫줄에는 입력될 벽돌의 수가 주어진다. 최대 100개 이다. 둘째줄 부터는 각 줄에 한 개의 벽돌에 관한 정보인 벽돌 밑면의 넓이, 높이, 무게가 차례로 주어진다. 출력 가장 높은 탑을 쌓을 때, 그 높이를 출력한다. 입력예시 25 3 4 4 4 6 9 2 3 16 2 5 1 5 2 출력예시 10 LIS를 기억하세요 ㅎ ㅎ
- Total
- Today
- Yesterday