[백준 21608번] 상어 초등학교
·
알고리즘 문제풀이/백준
문제 링크: https://www.acmicpc.net/problem/21608 21608번: 상어 초등학교 상어 초등학교에는 교실이 하나 있고, 교실은 N×N 크기의 격자로 나타낼 수 있다. 학교에 다니는 학생의 수는 N2명이다. 오늘은 모든 학생의 자리를 정하는 날이다. 학생은 1번부터 N2번까지 번호 www.acmicpc.net 우선순위큐, SET, 구현 아래와 같이 SET을 사용하면 인접한 칸에 있는 학생들이 i번 학생이 좋아하는 학생인지를 쉽게 찾을 수 있습니다. unordered_set prefer[401]; //prefer[i] : i번 학생이 좋아하는 학생들의 번호 인접한 칸에 있는 학생이 좋아하는 학생인지 확인할 때 perfer[i]에 값이 존재하는지만 확인하면 됩니다. 아래와 같이 우선..
[백준 1765번] 닭싸움 팀 정하기
·
알고리즘 문제풀이/백준
문제 링크: https://www.acmicpc.net/problem/1765 1765번: 닭싸움 팀 정하기 1번 학생 혼자 팀, 2, 4, 6번 학생 셋이서 팀, 3, 5번 학생 둘이서 팀일 때, 팀의 개수가 최대이다. www.acmicpc.net Union-Find, DFS, 집합, set, 자료구조 문제에 나와있는 두 가지 인간관계에 따라 Union-Find 알고리즘을 사용해서 같은 친구이면 같은 집합으로 만들어주고 집합의 개수를 세어주면 됩니다. 1. 내 친구의 친구는 내 친구이다. 이 부분은 단순히 Union-Find 알고리즘을 이용해서 같은 집합으로 만들어주면 끝입니다. 2. 내 원수의 원수도 내 친구이다. 문제에서 입력으로 주어진 원수 관계를 통해서 원수 인접 리스트를 만듭니다. 그다음 각각..
[C++] set STL에서 class 정렬 기준 바꾸기
·
C++
set은 default로 오름차순으로 정렬되도록 구현이 되어있습니다. set에 type으로 class를 사용할 때 정렬 기준을 바꾸려면 set의 두 번째 인자로 operator()를 오버로딩한 구조체를 넘겨주면 됩니다. 예를 들어 다음과 같은 person class가 있다고 했을 때 1 2 3 4 5 6 7 8 9 class person{ public: int height; int weight; person(int height, int weight) { this->height = height; this->weight = weight; } }; Colored by Color Scripter cs set의 원소가 다음과 같은 조건을 만족하도록 정렬하고 싶으면 1. height가 작은 순서대로 정렬 2. he..