ํฐ์คํ ๋ฆฌ ๋ทฐ
Programming/์๋ฃ๊ตฌ์กฐ
[์งํฉ adt] ๋นํธ๋ฒกํฐ ์ฌ์ฉํด ๋ถ๋ถ์งํฉ ๊ฒ์ฌํ๊ธฐ, ํฉ์งํฉ, ๊ต์งํฉ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ ๋นํธ๋ฒกํฐ๋ก ์์ฑํ๊ธฐ
ํด๋์๊ทธ 2021. 4. 19. 20:52๋ฐ์ํ
1. ๋นํธ๋ฒกํฐ ์ฌ์ฉํด ๋ถ๋ถ์งํฉ ๊ฒ์ฌํ๊ธฐ
์ฝ๋:
#include <stdio.h>
#include<string.h>
int subset(unsigned int A, unsigned int B) {// ์งํฉ A๊ฐ ์งํฉ B์ ๋ถ๋ถ์งํฉ์ธ์ง ๊ฒ์ฌ
if ((A | B) == B) // A or B๊ฐ B๋ผ๋ฉด A๋ B์ ๋ถ๋ถ์งํฉ์
return 1; // ๋ถ๋ถ์งํฉ์ด๋ฉด 1๋ฐํ
else
return 0; // ๋ถ๋ถ์งํฉ์ด ์๋๋ผ๋ฉด 0๋ฐํ
}
int main() {
char Aset[100], Bset[100]; // ์งํฉ Aset๊ณผ ์งํฉ Bset์ charํ์ผ๋ก ์ ์ธ
int lenA, lenB; // ๊ฐ ์งํฉ์ ๊ธธ์ด ์ ์ฅํ ๋ณ์
unsigned int A = 0, B = 0; // ์์๋ฅผ ๋ํ๋ผ ํ์ ์์ผ๋๊น unsigned ์๋ฃํ ์ฌ์ฉ
gets(Aset); //์งํฉ A์
๋ ฅ ๋ฐ๊ณ
lenA = strlen(Aset); // ๊ธธ์ด ๊ณ์ฐ
if (Aset[0] != '0') {// ๊ณต์งํฉ์ด ์๋๋ผ๋ฉด
for (int i = 0; i < lenA; i++) {
A = A | (1 << (Aset[i] - 'A'));// A์ ๋ฌธ์-'A'ํด์ค ๊ฐ์ left shiftํด์ค์ orํ๊ธฐ(๋นํธ๋ฒกํฐ๋ก ๋ฐ๊พธ๊ธฐ)
}
}
gets(Bset); //B๋ ๋๊ฐ์ด ๋ฐ๊ณ
lenB = strlen(Bset);
if (Bset[0] != '0') {
for (int i = 0; i < lenB; i++) {
B = B | (1 << (Bset[i] - 'A'));// ๋นํธ๋ฒกํฐ ๋ง๋ค์ด์ฃผ๊ธฐ
}
printf("%d\n", subset(A, B));// ํจ์ ํธ์ถํด์ ๋ถ๋ถ์งํฉ์ธ์ง ๊ฒ์ฌํ๊ณ ์ถ๋ ฅ
}
else
printf("1");// B๊ฐ ๊ณต์งํฉ์ด๋ผ๋ฉด ๋ถ๋ถ์งํฉ์ผ๋ก ๋ณด๊ณ ์ถ๋ ฅ(๊ทผ๋ฐ A๊ฐ ๋ถ๋ถ์งํฉ ์๋ ๋๋ ์๊ฐํด์ค์ผ๋๋๋ฐ ์๊ฐ์ํ๋ค ์ด์ ๋ณด๋๊น)
return 0;
}
**๋นํธ๋ฒกํฐ ์ด์ผํ๋์ง ๋ชฐ๋ผ์ ์กด๋ ํค๋งธ์........ ๋นํธ์ฐ์ฐ์ ๊ณต๋ถํ์
2. ํฉ์งํฉ, ๊ต์งํฉ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ ๋นํธ๋ฒกํฐ๋ก ์์ฑํ๊ธฐ
์ฝ๋:
#include <stdio.h>
#include<string.h>
void _union(int bit1[], int bit2[]) {
int arr[26];
int cnt1 = 0;
int cnt2 = 0;
for (int i = 0; i < 26; i++) {
if (bit1[i] != 0)
cnt1++;
}
for (int i = 0; i < 26; i++) {
if (bit2[i] != 0)
cnt2++;
}
if (cnt1 == 0 && cnt2 == 0) {
printf("0");
}
else {
for (int i = 0; i < 26; i++) {
if (bit1[i] == 1) {
arr[i] = 1;
}
if (bit2[i] == 1) {
arr[i] = 1;
}
}
for (int i = 0; i < 26; i++) {
if (arr[i] == 1) {
printf("%c", ('A' + i));
}
}
}
}
void intersect(int bit1[], int bit2[]) {
int arr[26];
int flag = 0;
int cnt1 = 0;
int cnt2 = 0;
for (int i = 0; i < 26; i++) {
if (bit1[i] != 0)
cnt1++;
}
for (int i = 0; i < 26; i++) {
if (bit2[i] != 0)
cnt2++;
}
if (cnt1 == 0 || cnt2 == 0) {
printf("0");
}
else {
for (int i = 0; i < 26; i++) {
if (bit1[i] == 1 && bit2[i] == 1) {
arr[i] = 1;
flag++;
}
}
if (flag == 0)
printf("0");
else {
for (int i = 0; i < 26; i++) {
if (arr[i] == 1) {
printf("%c", ('A' + i));
}
}
}
}
}
int main() {
char Aset[100], Bset[100];
int lenA, lenB;
int i = 0;
int bit1[26] = { 0 }, bit2[26] = { 0 };
gets(Aset);
lenA = strlen(Aset);
if (Aset[0] != '0') {
for (int i = 0; i < lenA; i++) {
bit1[Aset[i] - 'A'] = 1;
}
}
gets(Bset);
lenB = strlen(Bset);
if (Bset[0] != '0') {
for (int i = 0; i < lenB; i++) {
bit2[Bset[i] - 'A'] = 1;
}
}
_union(bit1, bit2);
printf("\n");
intersect(bit1, bit2);
return 0;
}
๋ฐ์ํ
'Programming > ์๋ฃ๊ตฌ์กฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ฌ๊ท] ํ๋ฌธ, ์ฌ๊ท์ ๋๋๊ธฐ, ์ฌ๊ทํจ์๋ฅผ ์ด์ฉํ ์ค๋์ฟ ํ์ด (0) | 2021.04.21 |
---|---|
[์ฌ๊ท] ์ต๋๊ฐ ๊ตฌํ๊ธฐ, ํ๋ ธ์ด์ ํ, ์ ํด๋ฆฌ๋ ํธ์ ๋ฒ(์ต๋๊ณต์ฝ์ ๊ตฌํ๊ธฐ) (0) | 2021.04.21 |
[๋ฆฌ์คํธ] ~~~ (0) | 2021.04.14 |
[๋ฆฌ์คํธ] ์ด์ค์ฐ๊ฒฐ๋ฆฌ์คํธ ADT ๊ตฌํ (0) | 2021.04.14 |
[์ฐ๊ฒฐ๋ฆฌ์คํธ] ๋จ์ผ์ฐ๊ฒฐ๋ฆฌ์คํธ๋ก ๋คํญ์ ๊ณ์ฐ ๊ตฌํํ๊ธฐ (0) | 2021.04.08 |
๊ณต์ง์ฌํญ
์ต๊ทผ์ ์ฌ๋ผ์จ ๊ธ
์ต๊ทผ์ ๋ฌ๋ฆฐ ๋๊ธ
- Total
- Today
- Yesterday
๋งํฌ
TAG
- Aimers
- ๋๋ฆผ๋ถ์ค
- ๋ ผ๋ฌธ์ฝ๊ธฐ
- ํ๋ก๊ทธ๋๋จธ์ค
- AIRUSH2023
- SKTECHSUMMIT
- ํ ํฌ์๋ฐ
- ์ฝํ ์ค๋น
- ์ปดํจํฐ๋น์
- Paper review
- AI์ปจํผ๋ฐ์ค
- C์ธ์ด
- lgaimers
- ํ์ด์ฌ
- gan
- ๋ ผ๋ฌธ
- gs๋ ผ๋ฌธ
- AIRUSH
- 2d-gs
- SQL
- ์ฝ๋ฉ์๋ฌ
- Gaussian Splatting
- MYSQL
- ์ฝ๋ฉ๊ณต๋ถ
- ๋ ผ๋ฌธ๋ฆฌ๋ทฐ
- ํ์ด์ฌ์ฝํ
- dreambooth
- CLOVAX
- ์คํ ์ด๋ธ๋ํจ์
- 3d-gs
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |
๊ธ ๋ณด๊ดํจ
๋ฐ์ํ