본문 바로가기

전체 글735

[백준 1094] 막대기 [C] 풀이 X를 비트로 표현했을 때 1의 개수가 필요한 막대의 개수와 일치한다. 소스코드 #include int main(){ int X, cnt = 0; scanf("%d", &X); do{ if (X & 1) cnt++; } while (X >>= 1); printf("%d", cnt); } 출처 1094번: 막대기 지민이는 길이가 64cm인 막대를 가지고 있다. 어느 날, 그는 길이가 Xcm인 막대가 가지고 싶어졌다. 지민이는 원래 가지고 있던 막대를 더 작은 막대로 자른다음에, 풀로 붙여서 길이가 Xcm인 막대 www.acmicpc.net 2021. 8. 14.
[백준 11723] 집합 [C] 풀이 비트연산자를 이용해 풀이하는 문제이다. all은 반복문을 돌릴필요없이 2^21에서 1을 빼면 20칸의 비트가 모두 1이 된다. 소스코드 #include #include int main(){ int M, S = 0, num; char op[7]; scanf("%d", &M); while (M--){ scanf("%s", op); if (!strcmp(op, "all")) S = (1 2021. 8. 14.
[백준 17219] 비밀번호 찾기 [C++] 풀이 map을 사용해 간단히 풀이했다. 소스코드 #include #include #include using namespace std; int main(){ cin.tie(NULL); ios_base :: sync_with_stdio(0); int N, M; cin >> N >> M; map info; string site, pw; while (N--){ cin >> site >> pw; info[site] = pw; } while (M--){ cin >> site; cout 2021. 8. 14.
[백준 7569] 토마토 [C] 풀이 "백준 7576, 토마토"에서 좌표축을 하나 추가해주면 된다. 소스코드 #include #define MAX 101 int box[MAX][MAX][MAX], M, N, H, rear; int dx[6] = {-1, 1}; int dy[6] = {0, 0, -1, 1}; int dz[6] = {0, 0, 0, 0, -1, 1}; typedef struct{ int x, y, z; }Queue; Queue q[MAX*MAX*MAX]; void push(int i, int j, int k){ q[rear].x = i; q[rear].y = j; q[rear++].z = k; } int bfs(int empty){ if (!empty) return 0; int x, y, z, px, py, pz, fro.. 2021. 8. 13.
[백준 7576] 토마토 [C] 풀이 "백준 2178, 미로 탐색"과 풀이가 비슷하다. 단, 시작점이 여러개이다. 토마토의 여부를 입력받을 때, 익지않은 토마토의 개수와 익은 토마토의 개수를 미리 계산했다. 익지않은 토마토를 발견할 때마다 empty를 하나씩 감소하며, 탐색이 끝난 후 empty가 0보다 크면 모든 토마토가 익을 수 없는 상황이기 때문에 -1을 반환했다. #include #define MAX 1001 int box[MAX][MAX], M, N, rear; int dx[4] = {-1, 1, 0, 0}, dy[4] = {0, 0, -1, 1}; typedef struct{ int x, y; }Queue; Queue q[MAX*MAX]; void push(int i, int j){ q[rear].x = i; q[rear++.. 2021. 8. 13.
[백준 2178] 미로 탐색 [C] 풀이 (0, 0)부터 범위를 초과하지 않고, 이동할 수 있는 공간이고, 방문한적 없는 곳을 탐색하면 된다. 다음에 이동할 좌표 (tx, ty)를 구조체 q에 저장하고 front, rear을 이용해 탐색을 진행했다. 소스코드 #include #include bool visited[100][100]; int graph[100][100], d[100][100]; int dx[4] = {-1, 1, 0, 0}, dy[4] = {0, 0, -1, 1}; typedef struct{ int x, y; }Queue; void bfs(int N, int M){ d[0][0] = visited[0][0] = 1; Queue q[N*M]; q[0].x = q[0].y = 0; int x, y, front = 0, rear.. 2021. 8. 13.