<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=Polynomial</id>
	<title>Polynomial - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=Polynomial"/>
	<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=Polynomial&amp;action=history"/>
	<updated>2026-05-15T00:03:39Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.8</generator>
	<entry>
		<id>https://mediawiki.zeropage.org/index.php?title=Polynomial&amp;diff=37531&amp;oldid=prev</id>
		<title>imported&gt;Unknown at 05:24, 7 February 2021</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=Polynomial&amp;diff=37531&amp;oldid=prev"/>
		<updated>2021-02-07T05:24:00Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;=== 목적 ===&lt;br /&gt;
 다항식의 곱셈을 이용하는 프로그램을 작성한다.&lt;br /&gt;
=== 자료구조 ===&lt;br /&gt;
 하나의 항은 coefficient 와 exponent 로 구성된다. 하나의 항(단항식)을 표현하는 자료구조는 다음처럼 구조체를 사용한다. (여기서는 지수와 밑모두 integer를 사용한다)&lt;br /&gt;
&lt;br /&gt;
   struct Node {&lt;br /&gt;
    int coef; // 밑&lt;br /&gt;
    int exp; // 지수   &lt;br /&gt;
   };&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
 다항식을 표현하는자료구조는 크게 두가지로 생각해 볼 수 있다. linked list 와 array 이다. 배열은 모두들 잘 알겠고 linked list 는 동적으로 storage를 할당받아 각 노드를 포인터로 연결한 자료구조를 말한다..(라고 우선 설명만 해둬야지 정확한 정의는 내리지 못하겠다..-_-). 물론 동적으로 할당받지 않고도 linked list 를 구현할수 있지만 그럴꺼면 배열로 하는게 낫지 그 노가다를 뭐하러 하나...-_-&lt;br /&gt;
&lt;br /&gt;
* 배열을 사용한 방법&lt;br /&gt;
    Node expr_1[SIZE];  // 이와 같은 식으로 표현한다.&lt;br /&gt;
    Node expr_2[SIZE];  &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
* linked list 를 사용한 방법&lt;br /&gt;
    // 위의 정의한 구조체에 포인터 변수 두개가 더 필요하다.&lt;br /&gt;
    struct Node {&lt;br /&gt;
     int coef;&lt;br /&gt;
     int exp;&lt;br /&gt;
     Node *prev;&lt;br /&gt;
     Node *next;&lt;br /&gt;
    };&lt;br /&gt;
 &lt;br /&gt;
    Node *n1 = new Node;&lt;br /&gt;
    Node *n2 = new Node;&lt;br /&gt;
    n1-&amp;amp;gt;next = n2;&lt;br /&gt;
    n1-&amp;amp;gt;prev = NULL;&lt;br /&gt;
    n2-&amp;amp;gt;next = NULL;&lt;br /&gt;
    n2-&amp;amp;gt;prev = n1;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
  이 방법을 사용할때 발생할수 있는 문제점은 memory leakage (메모리 누수)이다. Java같은 경우는 쓰레기 수집기가 있지만 c 는 코더(-_-)가 일일이 사용되지 않는 자원을 회수해줘야 한다. 그렇지 않으면 그 자원을 다시 사용할 수 없게 된다.&lt;br /&gt;
&lt;br /&gt;
=== specification ===&lt;br /&gt;
 다음과 같은 prototype 을 갖는 함수를 구현해야 한다. (이름은 달리해도 상관없다..)&lt;br /&gt;
    Node* mul(Node *n1, Node *n2);  // 두 다항식의 곱을 표현하는 새로운 다항식을 리턴한다.&lt;br /&gt;
    Node* add(Node *n1, Node *n2);  // 두 다항식의 합을 표현하는 새로운 다항식을 리턴한다.&lt;br /&gt;
    Node* add(Node *n1, Node *n2);  // 두 다항식의 차를 표현하는 새로운 다항식을 리턴한다.&lt;br /&gt;
    /* 문제점 : 다음과 같은 경우는 어떻게 처리해야 할까?&lt;br /&gt;
    n1 = mul(n1, n2);  // n1 이 중복 사용되었다..&lt;br /&gt;
    */&lt;br /&gt;
    Node* input();                 // 사용자에게 값을 입력받아 새로운 다항식을 생성하여 리턴한다.&lt;br /&gt;
    void delete(Node *node)        // 다항식을 삭제한다.&lt;br /&gt;
    void sort(Node *node)          // 다항식을 내림차순으로 정리한다.&lt;br /&gt;
   &lt;br /&gt;
=== input data ===&lt;br /&gt;
 다음과 같은 자료의 합, 차, 곱을 리턴하는 프로그램을 작성하시오&lt;br /&gt;
     식1 : 2x^5 + 3x^2 - 2x + 10&lt;br /&gt;
     식2 : 2x^4 + x^3 - 5x^2 +3&lt;br /&gt;
   &lt;br /&gt;
=== 잡담 ===&lt;br /&gt;
* 다항식을 표현하는 클래스를 만들어서 operator overloading 을 사용해도 되겠지만 이는 위에 말한 내용을 이미 구현한 후 이걸 클래스로 포장하는거기때문에 지금수준에서는 무리라고 생각됨... - 임인택&lt;br /&gt;
* 이거 작년에 했다가 한명(&amp;quot;영창이&amp;quot;)만 겨우 풀었어요 저도 이거 하다 포기했고 1학년에게 넘 어려운 문제가 아닐런지...-재동&lt;br /&gt;
----&lt;br /&gt;
see Also [[데블스캠프2002]]&lt;br /&gt;
----&lt;br /&gt;
[[문제분류]]&lt;br /&gt;
&lt;/div&gt;</summary>
		<author><name>imported&gt;Unknown</name></author>
	</entry>
</feed>