본문 바로가기

Coding

(195)
1937번 욕심쟁이 판다 문제 풀 당시 dfs의 개념이 안잡혀있는 상태여서 판다를 죽여버리고 싶었다 대나무가 많은곳으로 옴겨가면서 살 수 있는 일수를 1씩 증가시킨다 #include #include #define MAX 501 using namespace std; vector Food[MAX]; int var[MAX][MAX]; int xx[4]={1,0,-1,0}; int yy[4]={0,1,0,-1}; int day=1; int dfs(int x, int y, int num){ int nx, ny; if(var[x][y]){ return var[x][y]; } for(int i=0;i
2747번 피보나치 수 2 문제에 적힌 점화식에 따라 코드를 작성하면 된다 Top-down 방식으로 작성하였다 #include using namespace std; long long int arry[91]; long long int dp(int n){ if(n==0) return 0; if(n==1) return 1; if(arry[n]!=0) return arry[n]; return arry[n] = dp(n-1) + dp(n-2); } // long long int 배열을 사용할때 리턴값 또한 long long int로 바꾸어야 한다. 계속 int dp()로 선언했기 때문에 arry[n]을 리턴할때 오류가 생겼음 int main(){ int number; cin >> number; cout
1932번 정수 삼각형 크기 N인 정수 삼각형을 입력받아 맨 위층에서 N층까지 내려가면서 수를 더하고 맨 아래층에 도달했을 때 나올 수 있는 최대 값을 구하는 문제 나는 밑에서부터 큰 값을 정해 위층에 더해주는 방식으로 맨 위층까지 올라가 최대값을 구하였다 #include #include #include #define MAX 501 using namespace std; //vector tri[MAX]; int tri[MAX][MAX]; int value[MAX][MAX]; void dp(int number){ for(int n=number;n>1;n--){ for(int k=number;k>1;k--){ tri[n-2][k-2] = tri[n-2][k-2] + max(tri[n-1][k-2], tri[n-1][k-1]); //..
2583번 영역구하기 박스 개수 구하려고 하다가 피 본 케이스 그냥 직사각형 꼭지점 네 개 중 한 개를 기준잡아서 계산하면 된다 오래되서 기억이 잘 안나지만 왼쪽아래점을 기준으로 잡고 색칠된 곳을 체크해서 방문처리한 뒤 dfs 돌린 것 같다 #include #include #include #define MAX 101 #define visited true #define Non_visited false using namespace std; int xx[4] = {1,0,-1,0}; int yy[4] = {0,1,0,-1}; bool Check[MAX][MAX]; int area=1; vector ans; vector XY[MAX]; void dfs(int M, int N, int x, int y){ int nx,ny; if(Ch..
10026번 적록색약 적록색약 -> 빨간색과 초록색의 차이를 못느낌 ex) RGBRGB -> RRBRRB or GGBGGB DFS를 이용해 적록색약인 사람과 아닌 사람이 봤을때의 각 구역 수를 구하면 된다 나는 적록색약인 경우와 아닌 경우로 나누었다 #include #include #define MAX 101 #define visited true #define Non_visited false using namespace std; bool Check[MAX][MAX]; bool Check2[MAX][MAX]; vector RGB[MAX]; int xx[4] = {1,0,-1,0}; int yy[4] = {0,1,0,-1}; int C1, C2; void dfs(int x, int y, int n){ int nx, ny; if(..
size 크기 queue q; 라고 선언했을 때 q의 사이즈를 구한다고 가정해보자 1. int size = q.size(); 2.long int size = q.size(); 1번은 안되고 2번은 된다. 그 이유는 뭘까?
C++) max, min 숫자 3개 입력할때 인자 3개 받을때 -> min({1,2,3}); 이렇게 {}을 이용해 넣어주면 가능!
Fill, Memset memset과 fill은 둘 다 초기화에 쓰이는 함수 memset -> 0과 -1로 초기화가능(2차원도 한번에 초기화 가능), 1바이트 단위로 초기화하기 때문(bool, char에 많이 씀), cstring fill -> 데이터 형 관계없이 초기화 가능, 1차원만 초기화 가능, algorithm 2차원은 for문을 이용해서 초기화 ex) for(int i=0;i