알고리즘/백준(131)
-
[백준 1212번] 8진수 2진수
풀이숫자의 크기가 아닌 수의 길이가 333,334를 넘지 않다고 했으니 수를 입력받을때 int형으로 받을 수 없다.string 라이브러리를 이용해서 풀수있다. 소스코드123456789101112131415161718192021222324252627282930313233343536373839404142434445464748#include #include using namespace std; string trans(char a) { string result; if (a == '0') result = "000"; else if (a == '1') result = "001"; else if (a == '2') result = "010"; else if (a == '3') result = "011"; else i..
2017.06.15 -
[백준 11048번] 이동하기
풀이조건은 딱 세가지 경우이다.1. 오른쪽으로 한칸2. 아래로 한칸3. 대각선 남동쪽으로 한칸 이 세가지 경우중 합이 가장 큰값을 찾아서 DP방식으로 풀어내면 가능하다. 재귀로 푸려고 했지만 2차원 배열에서 재귀로 풀면 시간초과가 나는 경우가 많아 DP로 시도했다. 소스코드1234567891011121314151617181920212223242526272829303132333435363738394041424344#include using namespace std; int n, m, map[1001][1001];int tmp_arr[2][1001]; int Max(int a, int b) { return a > b ? a : b;} int main() { cin >> n >> m; for (int i = ..
2017.06.15 -
[백준 11052번] 붕어빵 판매하기
소스 코드12345678910111213141516171819202122#include using namespace std; int n,p[1001],dp[1001]; int returnMax(int a, int b) { return a > b ? a : b;} int main() { cin >> n; for (int i = 1; i > p[i]; } for (int i = 1; i
2017.06.14 -
[백준 11727번] 2xn 타일링 2
풀이2xn 타일링 문제에서 타일이 하나더 늘어난 형태의 문제다. 2xn 타일링 문제를 풀때와 동일하게 DP를 이용하고 DP배열의 크기를 크게 잡아주어야 한다. 다만 타일이 하나가 더늘어 났기때문에 점화식을 수정해주어야한다. 1x2, 2x1, 2x2 타일로 채우는 경우의 수를 구할 때 가로 크기가 2인 타일이 하나가 더추가되었다. i번째 타일의 경우는 i-1번째에서 1x2짜리 타일 한개붙이는 경우와 i-2번째에서 2x1 타일 두개 붙이는 경우와 2x2 타일 한개를 붙이는 경우가 있다. 즉, dp[i] = dp[i-1] + dp[i-2]*2 을 도출할 수 있다. 소스 코드12345678910111213141516#include using namespace std; int n;long long dp[1001]..
2017.06.13 -
[백준 10972번] 다음 순열
풀이STL을 사용하면 매우 간단하게 구현할 수 있다. STL을 사용하지 않고 풀어보기 위해서는 먼저 규칙성을 찾아야한다. N=31 2 31 3 22 1 32 3 13 1 23 2 1 N=41 2 3 41 2 4 31 3 2 41 3 4 21 4 2 31 4 3 22 1 3 42 1 4 32 3 1 4 2 3 4 12 4 1 32 4 3 13 1 2 43 1 4 23 2 1 43 2 4 13 4 1 23 4 2 14 1 2 34 1 3 24 2 1 34 2 3 14 3 1 24 3 2 1 N=3일경우에는 규칙을 비교할 수 있는 데이터양이 적어서 N=4인 경우 규칙성을 찾아보기가 조금 쉽다.. 규칙1. 오른쪽에서 왼쪽으로 이동하면서 n과 n-1을 비교한다.2. n-1 12 543 123645987 --> 1..
2017.06.09 -
[백준 7569번] 토마토
풀이 7576번 문제랑 똑같은데 Z축이 하나더 추가된 문제이다. 기본적인 BFS로 풀면서 한번 갈때마다 카운트를 세주면 풀 수 있는 문제 Z축을 [a][b][c] 중 a로할지 c로 할지 잘 정해주고, Que사이즈, 입력받는 배열의 사이즈만 잘 고려해주면 된다. 코드 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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 ..
2017.06.08