티스토리 뷰

>문제

> 핵심

정렬을 잘하자

>풀이과정

오늘 정렬문제만 주구장창 푸는 것 같다.

풀다보니 비슷한 유형의 반복이라는 느낌이 든다.

역시 문제를 많이 접해봐야 어떻게 해결해야 할지에 대한 느낌도 빨리빨리 오는 것 같다.

 

이것도 qsort 함수를 이용해 바로 풀었다. 다른 문제와 같이 크게 어렵지 않았다.

 

11650번 문제랑 11651번 문제랑 조건만 살짝 달라서 그냥 한 페이지에 같이 묶었다.

>깨달은점

문제를 많이 풀어봐야 유형파악도 빨리 되고 감이 잘 잡힌다.

앞으로도 열심히 풀어보자.

>코드

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>

typedef struct {
	int x;
	int y;
}coord;

int compare(const void* first, const void* second)
{
	coord* a = (coord*)first;
	coord* b = (coord*)second;

	if (a->x < b->x)
		return -1;
	else if (a->x > b->x)
		return 1;
	else
	{
		if (a->y < b->y)
			return -1;
		else
			return 1;
	}
	return 0;
}

int main()
{
	int i, n;
	coord* list;

	scanf("%d", &n);
	list = (coord*)malloc(n * sizeof(coord));

	for (i = 0; i < n; i++)
	{
		scanf(" %d %d", &list[i].x, &list[i].y);
	}

	qsort(list, n, sizeof(list[0]), compare);


	for (i = 0; i < n; i++)
	{
		printf("%d %d\n", list[i].x, list[i].y);
	}
	return 0;
}

 

#11651

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>

typedef struct {
	int x;
	int y;
}coord;

int compare(const void* first, const void* second)
{
	coord* a = (coord*)first;
	coord* b = (coord*)second;

	if (a->y < b->y)
		return -1;
	else if (a->y > b->y)
		return 1;
	else
	{
		if (a->x < b->x)
			return -1;
		else
			return 1;
	}
	return 0;
}

int main()
{
	int i, n;
	coord* list;

	scanf("%d", &n);
	list = (coord*)malloc(n * sizeof(coord));

	for (i = 0; i < n; i++)
	{
		scanf(" %d %d", &list[i].x, &list[i].y);
	}

	qsort(list, n, sizeof(list[0]), compare);


	for (i = 0; i < n; i++)
	{
		printf("%d %d\n", list[i].x, list[i].y);
	}
	return 0;
}
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함