문제 1번
#include <stdio.h>
#define MAX 101
int main() {
int n, j;
int arr[MAX][MAX];
scanf("%d", &n);
int k = n*n-1;
for(int dia = 0; dia < n*2-1; dia++){
for(int i=n-1;i >= 0; i--){
j = -dia+i+1;
if(-j >=0 && -j < n){
arr[i][j+(n-1)] = k--;
}
}
}
for(int i = 0; i < n; i++){
for(int j =0; j < n; j++){
printf("%d ", arr[i][j]);
}
printf("\n");
}
return 0;
}
문제 2번
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int n;
typedef struct PEOPLE {
char name[36];
char res_num[15];
char phone[15];
} people;
void input_info(int i, people *arr) {
int idx = i + 1;
printf("사람%d의 이름 입력 : ", idx);
scanf("%s", arr->name);
printf("사람%d의 전화번호 입력 : ", idx);
scanf("%s", arr->phone);
printf("사람%d의 주민등록 번호 : ", idx);
scanf("%s", arr->res_num);
}
void menu() {
printf("\n이름으로 찾으려면 1, 전화번호로 찾으려면 2, 주민등록 번호로 찾으려면 "
"3을 입력해주세요 >>> ");
}
void print_peo(int i, people p[]) {
int idx = i+1;
printf("\n사람%d의 정보:\n", idx);
printf("사람%d의 이름 : %s\n", idx, p[i].name);
printf("사람%d의 전화번호 : %s\n", idx, p[i].phone);
printf("사람%d의 주민등록 번호 : %s\n", idx, p[i].res_num);
}
int find_name(people p[]) {
char s[36], i;
printf("이름 입력 >>> ");
scanf("%s", s);
for(i =0; i < n; i++){
if(!(strcmp(p[i].name, s))){
break;
}
}
if(!(i < n)){
exit(-1);
}
print_peo(i, p);
}
void find_phone(people p[]) {
char s[15], i;
printf("전화번호 입력 >>> ");
scanf("%s", s);
for(i =0; i < n; i++){
if(!(strcmp(p[i].phone, s))){
break;
}
}
if(!(i < n)){
exit(-1);
}
print_peo(i, p);
}
void find_res_num(people p[]) {
char s[15], i;
printf("주민번호 입력 >>> ");
scanf("%s", s);
for(i =0; i < n; i++){
if(!(strcmp(p[i].res_num, s))){
break;
}
}
if(!(i < n)){
exit(-1);
}
print_peo(i, p);
}
int main(void) {
int c, idx;
scanf("%d", &n);
people arr[n + 1];
for (int i = 0; i < n; i++) {
input_info(i, &arr[i]);
}
menu();
scanf("%d", &c);
if(c == 1){
find_name(arr);
}else if(c == 2){
find_phone(arr);
}else if(c == 3){
find_res_num(arr);
}else{
exit(-1);
}
return 0;
}
문제 3번
#include <stdio.h>
typedef struct COMP{
struct COMP *front;
struct COMP *back;
int data;
}comp;
comp arr[101];
int n, f_i, b_n;
void insert(int i, int d){
arr[b_n].back = &arr[i];
arr[i].data = d;
arr[i].front = &arr[b_n];
b_n = i;
}
void print_n() {
comp *next;
for(int i = 0; i < n; i++){
if(i == 0){
printf("%d ", arr[f_i].data);
next = arr[f_i].back;
continue;
}
if(i == n-1){
printf("%d ", next->data);
break;
}
printf("%d ", next->data);
next = next->back;
}
}
int main() {
int idx, data;
scanf("%d", &n);
for(int i = 0; i < n; i++){
scanf("%d %d", &idx, &data);
if(i == 0){
f_i = idx;
b_n = idx;
arr[idx].data = data;
continue;
}
insert(idx, data);
}
print_n();
return 0;
}