C++(23)
-
백준 2407 c++(파스칼 삼각형) / python(factorial)
https://www.acmicpc.net/problem/2407 2407번: 조합 n과 m이 주어진다. (5 ≤ n ≤ 100, 5 ≤ m ≤ 100, m ≤ n) www.acmicpc.net 맨 처음에는 생각을 하지 않고, 그냥 queue에 값을 넣고, 큰 수가 나오면 에라토스테네스의 체를 통해 곱하는 값에 대해서 조정하면 되지 않을까?라는 생각으로 접근했다. 이렇게 생각없이 접근하면 헛고생만 합니다.. 꼭 문제 풀기 전에 범위 벗어나는지 확인해야 합니다... 문제에서 나올 수 있는 값에 최댓값에 전혀 미치지 못하는 long long int의 범위이다.. 그러면 어떻게 풀면 될까? 이런 문제는 거의 다 문자열로 풀이가 가능하다. 아래는 22%에서 터지는 코드인데 왜 터질까? #include #incl..
2023.04.10 -
백준 16236 아기상어 c++
https://www.acmicpc.net/problem/16236 16236번: 아기 상어 N×N 크기의 공간에 물고기 M마리와 아기 상어 1마리가 있다. 공간은 1×1 크기의 정사각형 칸으로 나누어져 있다. 한 칸에는 물고기가 최대 1마리 존재한다. 아기 상어와 물고기는 모두 크기를 가 www.acmicpc.net 엄청난 시도 후 전장에서 승리하고 글을 작성합니다. 아기상어의 크기보다 작은 것만 섭취가능 아기상어의 위치는 9로 나타냄 아기상어의 크기만큼 섭취를 한다면, 크기가 1 커진다. bfs로 작은게 있는지 판단 -> 판단 후 있다면 상하좌우 위치 가중치 while (true) { if (hunt(k)) { continue; } else { break; } } 메인 알고리즘은 hunt에서 fals..
2023.04.08 -
백준 뱀과 사다리 게임 16928 ( c++ )
https://www.acmicpc.net/problem/16928 16928번: 뱀과 사다리 게임 첫째 줄에 게임판에 있는 사다리의 수 N(1 ≤ N ≤ 15)과 뱀의 수 M(1 ≤ M ≤ 15)이 주어진다. 둘째 줄부터 N개의 줄에는 사다리의 정보를 의미하는 x, y (x < y)가 주어진다. x번 칸에 도착하면, y번 칸으 www.acmicpc.net 문제를 읽고 사다리만 타면 되지 않을까?라는 생각을 했었는데 좋은 사다리 위치로 가기까지 뱀의 도움도 필요하다는 것을 느끼고, 바로 BFS로 들어갔다. Queue에 향하는 위치, 움직인 횟수를 저장하는 두 개의 변수가 필요하다고 생각함. 원래는 pair int int를 사용해도 좋지만, 나는 구조체를 더 선호하는 편이다. 그래서 구조체를 사용해서 qu..
2023.04.07 -
백준 10026 적록색약(C++)
https://www.acmicpc.net/problem/10026 10026번: 적록색약 적록색약은 빨간색과 초록색의 차이를 거의 느끼지 못한다. 따라서, 적록색약인 사람이 보는 그림은 아닌 사람이 보는 그림과는 좀 다를 수 있다. 크기가 N×N인 그리드의 각 칸에 R(빨강), G(초록) www.acmicpc.net Solution 1. 문제를 보자 느낀 점 DFS로 풀면 되겠다.. 토마토 문제랑 비슷하다.. https://www.acmicpc.net/problem/7576 7576번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M,N ≤ 1,000 이다. 둘째 줄부터는 하나의 상자에 저장된 토마..
2023.04.06 -
[백준] 1780 종이의 개수 (c++)
#include #include #include using namespace std; int n; long long int arr[3001][3001]; int count_number[3]; string str, tmp; void bh(int x, int y, int n) { int first = arr[x][y]; bool flag = true; for (int i = x; i < x + n; i++) { for (int j = y; j < y + n; j++) { if (arr[i][j] != first) { flag = false; break; } } } if (flag) { count_number[first + 1]++; } else { for (int a = x; a < x + n; a += n..
2022.07.07 -
[백준] 잃어버린 괄호 1541 c++
1. 95%에서 멈추는 현상 (1개를 넣었을 때 예외 처리해야 됨) 1. 숫자랑 기호를 구별한다. 2. 만약에 +가 있다면 앞뒤로 더해서 새로운 배열에 넣는다. 3. 마지막 기호가 -,+에 따라서 마지막 배열에 더 해줄지, 추가할지 정한다. 4. 배열에 있는 수들은 이제 계속 빼 주면 된다. #include #include #include using namespace std; vector vec; vector pm; vector k; string str, tmp; int main() { ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); cin >> str; long long int point = 0; for (long long int i = 0; i..
2022.07.06