전체 글
-
백준 6679 - 싱기한 네자리 숫자백준 algorithm 2020. 2. 6. 19:33
-10진수의 숫자를 실제로 12진수와 16진수로 표현할 필요는 없다. 각 자리 숫자를 얻을 때마다 해당 값을 더해가며 값을 구할 수 있다. -3개의 함수를 생성하여 간단하게 풀었다. #include #include #include #include using namespace std; int find10(int N) { int tem=10; int val=0; while(N>0) { val+=N%tem; N/=tem; } return val; } int find16(int N) { int tem=16; int val=0; while(N>0) { val+=N%tem; N/=tem; } return val; } int find12(int N) { int tem=12; int val=0; while(N>0) {..
-
백준 11651-좌표 정렬하기 2백준 algorithm 2020. 2. 5. 15:13
pair와 vector를 사용하여 풀수 있다. 더불어 sort함수를 사용하면 간단하게 풀 수 있다. #include #include #include #include using namespace std; int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); int N; cin>>N; pair v; vector vp; int x,y; for(int i=0; i>x; cin>>y; v=make_pair(y, x); vp.push_back(v); } sort(vp.begin(), vp.end()); for(int i=0; i
-
백준 2167 - 2차원 배열의 합백준 algorithm 2020. 1. 29. 19:01
for문을 통해 풀 수 있는 문제이다. 배열의 크기를 동적할당 할 수 있지만 본인은 302*302로 미리 지정하고 사용하였다. #include using namespace std; int main() { int arr[302][302]; int M, N; cin>>M>>N; for(int i=1; iarr[i][j]; } } cin>>M; int i,j,x,y; int sum=0; for(int num=0; num>i>>j>>x>>y; for(int row=i; row
-
백준 2748 - 피보나치 수 2백준 algorithm 2020. 1. 29. 18:39
피보나치를 재귀로 표현할 줄 알면 간단히 풀 수 있는 문제이다. #include using namespace std; long long fibo[91]={0}; long long fibonacci(int n) { if(fibo[n]!=0)return fibo[n]; else if(n==0) { return 0; } else if(n==1) { return 1; } else { return fibo[n]=fibonacci(n-1)+fibonacci(n-2); } } int main() { fibo[0]=0; fibo[1]=1; int N; cin >> N; if(N==0)cout
-
백준 2864 - 5와 6의 차이백준 algorithm 2020. 1. 29. 15:17
숫자 중 5가 들어있는 수를 6으로 바꾸는 함수와 숫자 중 6이 들어있는 수롤 5로 바꾸는 함수를 생성하여 최소합과 최대합을 생성하였다. #include #include using namespace std; long FiveToSix(long num) { long tem = num; int ten=1; while(tem>0) { int namu=tem%10; if(namu==5) { num-=(namu*ten); num+=(6*ten); } tem/=10; ten*=10; } return num; } long SixtoFive(long num) { long tem = num; int ten=1; while(tem>0) { int namu=tem%10; if(namu==6) { num-=(namu*ten)..
-
백준 10844 - 쉬운 계단 수백준 algorithm 2020. 1. 29. 14:23
dp임을 알고서도 푸는데 많이 헤멘 문제였다. dp[자릿수] [들어갈 수 있는 숫자] = 가능한 경우의 수 로 잡고 bottom up의 방법으로 풀었다. *알고리즘 1. 처음자리의 숫자는 1~9까지만 들어갈 수 있으므로 1개의 가지수씩 들어갈 수 있다. 2. 해당 자리숫자에 1)0인 경우 : 이전 숫자가 1인 경우 2)9인 경우 : 이전 숫자가 8인 경우 3)1~8 : 나머지 이를 점화식으로 나타낼 시 1) j==0 dp[i][j]=dp[i-1][j+1] 2) j==9 dp[i][j]=dp[i-1][j-1]; 3) 나머지 dp[i][j]=dp[i-1][j-1]+dp[i-1][j+1]; 로 짤 수있다. 3. 내가 원하는 자릿수의 0~9까지 가능한 가지의 수를 모두 더한다 ***mod의 숫자가 int의 범위..