본문 바로가기

For all category

지원사격이랍시고 했는데 관계연산자 오버로딩한 부분에서 의 알고리즘이 잘못되었습니다 bint를 코딩하던 중에 발견하게 되어 알려드립니다 현재 수정중이며, bint가 완성되면 같이 올려드리겠어요 :) 더보기
Bit twiddling Hack : 정수의 부호 계산 정수의 부호 계산 경고 : 오역이 넘쳐날 수도 있어요. int v; // v의 부호를 찾고싶어 int sign; // 결과는 여기에 저장됨. // CHAR_BIT는 1바이트당 비트수를 나타낸다. (일반적으로 8). sign = -(v > (sizeof(int) * CHAR_BIT - 1)); // 또는, 짧은 명령 (근데 이식성은 없음.): sign = v >> (sizeof(int) * CHAR_BIT - 1); 바로 위의 마지막 식은 32비트 정수의 sign = v >> 31의 값을 구한다. 이건 sign .. 더보기
[Bigfloat 지원사격?] 자연수부터 해봅시다 :) ※ 발행할까 말까 고민좀 했는데, 내 정기 포스트가 아니라 일단 발행에 체크 안함 - to 관리자 안녕하십니까 Mr. K입니다 원래 오늘 제 포스트( 행렬 )를 끄적이기로 했던 날입니다만 환타님이 Bigfloat 만드신 것을 보고서 왠지 불타올라서(?) 개인적인 의견도 끄적이고 구현까지 해버렸습니다 -_-; 일단 저는 Talk에 끄적여놓았듯이 Bigfloat을 만들기 위한 기반은 Bigint라는 생각이 들고, Bigint를 만들기 위한 기반은 Unsigned Bigint라는 생각이 들어서 자연수의 역할을 하게 될 Unsigned Big INTeger를 먼저 만들어보았습니다 클래스의 정의부분입니다 #ifndef UBINT_H #define UBINT_H #include using std::ostream; .. 더보기
Bigfloat도 좋지만 ※ 카테고리를 딱히 정하지 못해서 Talk로 해놨는데, 바꿀 의향이 있다면 바꿔줏메 (굽신굽신) 일단, 환타님 소스는 길어서 다 읽어보진 못했습니다 대충 1/4쯤 읽었으려나 -_-; 개인적으로 생각해봤습니다만 Bigfloat을 완전하게 만들기 위해서는 유리수를 나타내는 객체, Rational이 필요하고 유리수를 만들기 위해서는 정수를 나타내는 객체, Bigint가 필요합니다 Bigint를 만드는 방법은 간단히 두가지로 나눌 수 있는데 1. Unsigned Bigint(자연수)를 만들고 그것의 기능을 상속받아서 Bigint(정수)를 만드는 것 2. 아예 Bigint를 통째로 만드는 것 입니다 Bigint의 경우 일전에 환타님이 Talk에다 써놓은 [배울게 많은 것 같지만 배울 수 없는곳] 포스트에 쓰인 링.. 더보기
PKU 1455. Crazy Tea Party 미친 차 파티 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 4055 Accepted: 2736 설명 미친 차 파티>>에 참가한 n명의 참가자들이 테이블에 둘러앉아있습니다. 매 분마다 한 쌍의 이웃한 사람들이 서로 자리를 바꿀 수 있습니다. 모든 참가자가 역순으로 앉을때까지 걸리는 시간을 구하세요. 입력 첫 번째 줄은 테스트할 시행횟수입니다. 다음 각 줄은 하나의 양정수 n (1 더보기
PKU 1455. Crazy Tea Party Crazy tea party Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 4055 Accepted: 2736 Description n participants of > sit around the table. Each minute one pair of neighbors can change their places. Find the minimum time (in minutes) required for all participants to sit in reverse order (so that left neighbors would become right, and right - left). Input The first line is the amount of .. 더보기
Generic Algorithm with C++, 07 - Sorting! 우훅. 이렇게 늦다니 ㄱ-;;;; ----------------------------------------------------------------------------------------------------- C언어에서는 정렬을 하려면 직접 정렬을 구현해야 했습니다. 아니면 qsort함수를 이용해 비교함수를 만들어야 했지요. C++에서는 STL에서 제네릭 알고리즘으로 기본적으로 제공해 준답니다 -_-! #include #include #include int main() { list::iterator it; int data[10], i; for (i = 0; i < 10; i++) { data[i] = 10 - i; } list a(&data[0], &data[9]); sort(a.begin(), .. 더보기
발코딩 빅플롯 #include #define DELETE_SAFELY(p) if(p){delete []p;p=NULL;} class bigfloat { private: char *arr; char sign; int leninte, lendeci, lenwh; public: bigfloat(); bigfloat(bigfloat &); ~bigfloat(); //단항연산자 void operator = (char *); void operator = (double); void operator = (bigfloat &); //부등호 friend int operator == (bigfloat &, bigfloat &); friend int operator != (bigfloat &, bigfloat &); friend int o.. 더보기
Tesla's Post 연기 공지 음 방학의 끝자락이라 그런지 정신없이 바뻐요...;; 이번주 내로 시간 내서 올리도록 하겠습니다. 으아 요즘에 제대로 시간을 못 맞추네요...죄송합니다. 더보기
PKU 1904. King's Quest. [판정:WA] ㅋㅋㅋ 젠장 알고리즘이 정리되지 않는 상태에서 그냥 막코딩했더니 이모양이군요 -_-; solving process에 올려놓은 케이스에 대해서는 잘 나옵니다만 아마 어딘가 틀렸으니 wa겠지요? =_= #include #include using namespace std; enum purity { CLEAN, DIRTY }; class Vertex { public: int odeg; int *dest; purity status; Vertex() { odeg = 0; dest = NULL; status = CLEAN; } }; list *ls; list::iterator iter; void permutation( Vertex *pv, int n, int depth ); int main() { Vertex *vs.. 더보기
변수의 범위 타입 크기(byte) 범위 char 1 -127 ~ 127 int 4 -2147483647 ~ 2147483647 __int64 8 -9223372036854775807 ~ 9223372036854775807 C언어를 배우면서 이런 표는 다들 보셨을겁니다. 정말로 표에 저것만 나와있다면 던져버리세요. 왜 변수의 범위가 저렇게 정해졌는지 궁금하셨죠? 알고 있어도 궁금하다고 해요. 1바이트는 8비트 입니다. 1비트는 오직 0과 1만 가질 수 있죠. int형 변수는 32(4 X 8)개의 비트로 숫자를 나타냅니다. 이렇게 0000 0000 0000 0000 0000 0000 0000 0000 감이 오나요? 이진수입니다. int형의 최대값인 2147483647는 2진수로 0111 1111 1111 1111 111.. 더보기
[공지] 포스팅에 관해 2월 12일에 올렸어야 할 공지를 이제서야 올리게 되는군요 12일, 19일 포스팅은 쉽니다 이미 날짜도 지나버려서 별 의미는 없지만 Dlbo군이 공지는 띄우라고 해서 말이지요 -_-a 지금 집안일은 둘째치고 컴퓨터 상태가 좋지 않아 아마 26일 포스팅 역시 쉬지 않을까 싶습니다 쿨러에 낀 먼지도 좀 닦아내고 했는데 파워가 낡아서 그런가 요즘들어 갑자기 재부팅되는 일이 잦아져서 말이지요 -_- 지금 이것도 한번 재부팅되고 마저 쓰는거라는- ps. 환타님이 pku 2719 AC를 받으셔서 [팀의 절반]이 AC를 받은 상태이니 제 솔루션의 checker함수 body를 써놓겠습니다 :) 더보기
PKU 2719. Faulty Odometer. AC #include #include int table[10]={0,1,2,3,0,4,5,6,7,8}; int cvt(char *str) { int i,nines=1,result=0; for(i=strlen(str)-1; i>=0; i--, nines*=9) result+=(table[str[i]-'0'])*nines; return result; } main() { char str[10]; gets(str); while(str[0]!='0') { printf("%s: %d\n",str,cvt(str)); gets(str); } } 그냥 0,1,2,3,5,6,7,8,9을 사용하는 구진법 숫자를 십진법으로 바꾸면 되는 문제였네요. int e(char*a){int b[]={0,1,2,3,0,4,5,6,7,8},i,.. 더보기
PKU 2719. Faulty Odometer. AC get... a(n,k,nn,sum1,sum2){if(n 더보기
환타님과 Mr.K의 글을 기다리는중... ..... ㅡ,.ㅡ....;; 더보기
PKU 2719. 이상한 속도계. 솔루션코드. #include #include #include #include using namespace std; int main() { int data, i, sum, a; while (cin >> data) { if (data == 0) { break; } sum = data; i = 1; cout 더보기
그래프(Graph) - 깊이우선검색(DFS)?? 안녕하세요~ 몰아하는 숙제에 치이며 사는 테슬라입니다. 오늘은 저번 시간에 이어 양대산맥중의 하나인 깊이우선검색(DFS = Depth First Search)에 대해서 포스팅하는군요. 깊이우선검색은 너비우선검색과는 다르게 시작 정점에서 하나만 죽어라 파고 들어가는 것이지요. 더 이상 파고 들어갈게 없으면 방문하지 않았던 남은 곳에서 이어서 다시 끝까지 파고드는 것을 반복하는 것이지요. 여기서도 방문했다는 체크는 필요합니다. 하지만 저번의 너비우선검색과는 약간 다릅니다. 왜 다를까요? 이유는 담아두는 방식의 차이입니다. 너비우선검색은 큐를 사용했지요? 그렇다면 깊이우선검색은 스택을 사용합니다. 큐는 먼저 들어가면 어떻게 되도 먼저 나올 수 밖에 없기 때문에 들어갈때 체크해도 상관없지만, 스택의 경우 먼저에.. 더보기
PKU 2719. Faulty Odometer. [판정:AC] 크하하하 이건 뭐 제 포스팅을 미뤄놓고 놀다보니 문제풀 시간은 남는군요 풀이는 간단합니다 주어진 input에 대해서 input보다 작은 자연수들 중에 4가 하나라도 들어가는 것의 개수를 세어서 input에서 빼주면 됩니다 dscanf함수는 scanf함수를 가지고 응용한 함수입니다 이전에도 문제풀 때 종종 사용하였고 앞으로도 종종 쓰겠지요 scanf로 입력받은 숫자를 그대로 반환하는 기능을 합니다 (앞의 d는 scanf에서 %d로 입력받아서 -_-;) length함수는 input의 자리수를 구하는 함수입니다 를 include하여 [1 + log10(num)]을 구해도 같은 결과가 나올 것이고, 와 를 include하여 itoa와 strlen을 이용해도 같은 결과가 나올 것이라 짐작합니다 pow10함수는 1.. 더보기
Generic Algorithm with C++, 06 - Template Set -_-.... 크흑. set은 그나마 자료가 좀 적네요. -_-; ----------------------------------------------------------------------------------------------- set은 쉬운 말로 해서 '집합' 이라 부릅니다. 참 재미있는 녀석인데요... 고등학교 수학 1학년 과정(중학수학에도 있었나는 가물가물해서 기억 잘 안납니다. 군입대가 코앞인데 ㅡ,.ㅡ....;;) 에서 존재하는 집합녀석. 집합인 set에는 동일한 원소가 여러개 존재할 수 없습니다. 동시에, 쓰기 편하라고 알아서 작은 값부터 정렬해둡니다-_- 반복자 이터레이터가 존재하며, 삽입과 삭제가 간편하고, 미리 정렬을 해 두는데다가, 정렬메소드가 없기 때문에 내부 값을 마음대로 바꿔버리면 참 .. 더보기
Tesla's Post 공지 으아 죄송합니다. 방학이 막바지에 들어가니 할일이 산더미네요. 방학 과제 몰아서 하는 초등학생의 기분을 느끼고 있습니다. 포스트는 오늘 새벽이나 늦어도 내일까지는 올리겠습니다. 더보기
포스트 연기 공지 -_-;; -------------------------------------------------------------------------------------------- 연기 사유 : ...... 자료 압박 연기 일자 : 2. 17 화 재연재 일정 : 2. 19 목 이전까지 -------------------------------------------------------------------------------------------- 변명의 변-_- 후배녀석이 컴을 중고로 17만원 주고 사왔습니다. .... 실제 가격대는 약 30만은 써야 되는 가격대. +로 서로 밸런스도 캐안습. -_-; 계속 고치다 고치다 오늘 끝장 봤습니다. CPU도 탄거 커버 불가, 보드도 막장, 하드도 캐막장. -_-.. 더보기
PKU 2719. Faulty Odometer 고장난 주행거리계 Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 5004 Accepted: 3159 설명 당신은 차의 주행거리를 정수로 표시해주는 주행거리계가 달린 차를 보고 있습니다. 그러나 그 주행거리계는 좀 고장이 나서, 언제나 숫자 4를 뛰어넘고 3에서 5로 바꿔버립니다. 이 고장은 일의 자리 뿐만이 아닌, 각 자리에서 문제를 일으킵니다. 예를 들면 주행거리계가 15339 마일이 표시된 상태에서 1마일을 더 움직이면 주행거리계는 15340 마일이 나오는 대신 15350 마일을 보여줍니다. 입력 각 줄은 1..999999999의 범위 안에 있는, 주행거리계에 표시된 숫자로, 앞자리의 0은 생략한 상태의 양정수로 입력합니다. 입력을 종료할 때.. 더보기
PKU 2719. Faulty Odometer Faulty Odometer Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 5004 Accepted: 3159 Description You are given a car odometer which displays the miles traveled as an integer. The odometer has a defect, however: it proceeds from the digit 3 to the digit 5, always skipping over the digit 4. This defect shows up in all positions (the one's, the ten's, the hundred's, etc.). For example, if.. 더보기
팀프로젝트 관련 제안 및 기반 사항. 팀프로젝트를 진행하려면 일단 기획 및 사전 모임이 필요하다고 봅니다. 아마 가장 바쁜게 환타님이고, 그 다음이 곽과 리턴군, 그다음이 슬라군과 지군, 제일 널널한게 저인거 같군요 -ㅁ-;;; 가능한 날짜와 시간대를 여기에 댓글로 달아주세요. 환타님이 사는곳 근처로 이동해서 모이는게 최적이라 보고 있구요, 각자 아이디어 하나씩은 준비해두고 그중 투표로 골라내는게 어떨까 싶습니다. 그럼 답변 기다리고 있겠습니다 -_-! 더보기
팀프로젝트를 하나 만드는 게 어떨까요? 문제푸는 것 보다 더 재밌을 것 같고... 복소수 클래스나 그래프출력하는 프로그램등 괜찮은 거 다같이 만들어보는 게 어떨까요? 더보기
시간복잡도 시간복잡도 처리해야하는 데이터의 양(N이나 n으로 표기)에 따라 걸리는 시간 절대적인 시간이 아닌 비례적인 시간을 나타냄. O(f(n))과 같이 표기. 그렇게 믿을만한 건 못됨. 평균적인 경우 일반적 입력데이터에 따라 걸리는 시간 예) 반쯤정렬된 배열에 대한 정렬 최악의 경우 가능한 최악의(오래걸리는) 입력데이터에 따라 걸리는 시간 시간복잡도는 보통 최악의 경우로 나타냅니다. 예) 반대로 정렬된 배열에 대한 정렬 시간복잡도의 예 O(1) 데이터의 크기에 상관없이 일정 시간 안에 실행을 마침 상수시간이라고도 부름 O(n) 데이터의 크기에 비례하는 시간이 걸림 선형시간이라고도 부름 순차검색이 해당됨 O(n2) n2에 비례하는 시간이 걸림 선택정렬이 해당됨 O(log n) 이진검색이 해당됨 O(n log n).. 더보기
ㅋㅋㅋㅋㅋ 제가 정말 미쳤나봅니다. #include #include using namespace std; #define MAX 1000000 #define FIX 500 #define L_LIMIT -1 #define R_LIMIT 2 * FIX + 2 #define U_LIMIT 2 * FIX + 2 #define D_LIMIT -1 int map[1001][1001], targetX, targetY; int find(int x, int y, int level) { int result[4], i, temp1, temp2; if (x R_LIMIT || y U_LIMIT) { return MAX; } if (map[x][y] == -1) { return MAX; } if (x =.. 더보기
그래프(Graph) - 너비우선검색(BFS)?? 자 돌아왔습니다. 점차 불량 마감 작가와 같이 변해가는군요...흑흑 자 오늘은 그래프에서 너비우선검색에 대해서 해보도록 하겠습니다. 자 저번시간에 표현법에 대해서 했지요? 그런데 컴퓨터로 표현해도 결국은 써먹어야겠지요? 트리에서도 했지만 만약에 모든 노드들을 방문해야 한다면...?? 그렇지요. 결국은 검색하는 운행법이 있어야겠지요? 트리에는 전위, 중위, 후위, 레벨 운행법이 있었죠? 그런것처럼 그래프에도 크게 너비우선검색(BFS = Breadth First Search)와 깊이우선검색(DFS = Depth First Search)이 있습니다. 오늘은 너비우선검색에 대해서 하도록 하겠습니다. 자 방문을 하려고 한다면? 그렇죠. 시작점이 있어야겠죠? 그런데 우리의 그래프...트리와는 달리 이곳 저곳 연결이.. 더보기
2박 3일 놀러가는데..(수정) 문제 오늘 올릴까요? --------------------절취선----------------------- 죄송. 술먹고 논다고 너무 늦게 확인했네요. 여행 다녀와서.. 여러분들 요새 분위기가 다운되어있으니까 쉬운 문제로 찾아뵐게요. 들보야 미안해 나중에 술살게 화내지마 ㅇ 더보기
포스팅연기 ------------------------------------------------------------------------------------------- 연기 사유 :졸업식으로 인한 주변의 독촉 연기 일자 : 2. 11 월요일 재 연재 일자 : 가능한 빨-_-리 ------------------------------------------------------------------------------------------- 졸업식은 내일인데 오늘부터 난리치기 시작하네요. 더보기