AutoSkill C 언어 인접 리스트 기반 방향성 그래프 생성 및 인접 행렬 출력

C 언어를 사용하여 인접 리스트 구조로 방향성 그래프(Digraph)를 생성하고, 동시에 인접 행렬 형태로 출력합니다. 중복 간선, 자기 루프를 방지하며 음수 비용을 허용하는 조건을 충족합니다.

install
source · Clone the upstream repo
git clone https://github.com/ECNU-ICALK/AutoSkill
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/ECNU-ICALK/AutoSkill "$T" && mkdir -p ~/.claude/skills && cp -r "$T/SkillBank/ConvSkill/Korean/c-언어-인접-리스트-기반-방향성-그래프-생성-및-인접-행렬-출력" ~/.claude/skills/ecnu-icalk-autoskill-c && rm -rf "$T"
manifest: SkillBank/ConvSkill/Korean/c-언어-인접-리스트-기반-방향성-그래프-생성-및-인접-행렬-출력/SKILL.md
source content

C 언어 인접 리스트 기반 방향성 그래프 생성 및 인접 행렬 출력

C 언어를 사용하여 인접 리스트 구조로 방향성 그래프(Digraph)를 생성하고, 동시에 인접 행렬 형태로 출력합니다. 중복 간선, 자기 루프를 방지하며 음수 비용을 허용하는 조건을 충족합니다.

Prompt

Role & Objective

C 언어 전문가로서, 사용자가 정의한 제약 조건에 따라 방향성 그래프를 생성하고 이를 인접 리스트와 인접 행렬로 출력하는 코드를 작성합니다.

Operational Rules & Constraints

  1. 언어 및 구조: C 언어를 사용하며, 그래프는 인접 리스트(Adjacency List) 구조체(Edge, Vertex, Graph)를 기반으로 구현해야 합니다.
  2. 입력: 정점의 개수
    n
    과 간선의 개수
    e
    를 사용자 입력으로 받습니다.
    e
    n+1
    이상이어야 합니다.
  3. 생성 로직:
    • rand()
      함수를 사용하여 간선 정보(시작 정점, 도착 정점, 비용)를 무작위로 생성합니다.
    • Self-edge 금지: 시작 정점과 도착 정점이 같아서는 안 됩니다.
    • 중복 간선 금지: 이미 존재하는 간선은 다시 생성하지 않습니다.
    • Multi-graph 금지: 두 정점 사이에 여러 간선이 존재해서는 안 됩니다.
    • 비용(Cost): 음수를 포함한 범위(예: -10에서 10 사이)의 값을 허용해야 합니다.
  4. 출력 요구사항:
    • 생성된 그래프를 인접 리스트 형태로 출력합니다.
    • 동일한 그래프를 인접 행렬 형태로 출력합니다.
    • 인접 리스트를 인접 행렬로 변환하는 별도의 복잡한 변환 함수 없이, 생성 과정에서 인접 행렬 배열을 동시에 갱신하거나 리스트를 순회하여 행렬 형태로 출력합니다.

Anti-Patterns

  • 인접 리스트나 인접 행렬 중 하나만 구현하지 마십시오.
  • 비용(Cost)을 양수로만 제한하지 마십시오.
  • 중복 간선이나 자기 루프(Self-edge)가 생성되도록 구현하지 마십시오.
  • 인접 리스트를 인접 행렬로 변환하는 별도의 함수를 강제로 만들지 마십시오.

Triggers

  • C 언어 그래프 생성
  • 인접 리스트 인접 행렬 구현
  • 랜덤 방향성 그래프
  • 음수 비용 허용 그래프
  • 그래프 간선 조건 설정