전체 글 223

백준 피보나치 함수 1003번

이문제는 동적 프로그래밍을 하면서 취코테랑 같은 문제라고 생각해서 접근했다가 안 풀려서 상당히 당황 했었지만 내 나름의 동적프로그래밍을 해봤다.. 하지만 이게 가장 효율적인 코드인가는 잘 모르겠다. ​내 코드 #include int done[41] = { 0 }; int dzero[41] = { 0 }; void fibo(int n) { dzero[0] = 1; dzero[1] = 0; done[0] = 0; done[1] = 1; if (n < 2) return; int check = 2; for (int i = 2; i

백준 타일채우기 문제 dp

어려운 문제였다. 많이 헤맸고 내가 헤맸던 과정들을 정리해봐야겠다. 재귀 문제와 점화식 세우는 문제는 정말 유사한 면이 많다. 내가 스스로 짜는거는 도저히 못하겠는데 남들 코드를 보면 정말 신비롭다는 생각이다. 이걸 성공을 하긴 했지만 온전히 내 힘으로 한게 아니기 때문에 언젠가 다시 해결해봐야겠다. 느낀점은 이만하고 이제 문제를 설명해보자. ​ 문제는 매우 간단하다. 우리는 일단 문제 이해는 어렵지 않을테니 문제 이해는 넘어가겠다. ​ 문제 해결을 위해 길이가 작은 부분부터 문제를 봤다. 우선 첫번째로 이 문제는 길이가 짝수일때만 가능하다. 타일들의 넓이는 다 짝수기 때문에 짝수들을 이용해서 넓이가 홀수인 사각형을 만들 수 없기 때문에 우리는 하나 특징을 찾았다. 1번 특징 : 길이는 반드시 짝수이고 ..

백준 4673번 셀프넘버 문제(C언어)

#include int main() { int num = 97; int result; printf("1\n3\n5\n7\n9\n20\n31\n42\n53\n64\n75\n86\n97\n"); result = num; while (num 10) { result += num % 10; num = num / 10; } result += num; num = result; printf("%d\n", result); } } 처음에 문제 이해를 잘 못해서 어떤 숫자의 셀프넘버를 계속 올라가면서 구하는 함수를 만들었다... 문제 이해가 어렵군.. #include int check_selfnum(int a) { int result; int tmp = a; int i = 1; wh..

백준 8958(C) strlen함수사용

#include int main() { int a; scanf("%d", &a); int count = 0; int sum[80] = { 0 }; char arr[80][80]; int i = 0; while (i < a) { scanf("%s", arr[i]); i++; } int k = 0; int j = 0; while (k < i) { j = 0; count = 0; while(arr[k][j]== 'X' || arr[k][j] == 'O') { if (arr[k][j] == 'O') count++; else if(arr[k][j]== 'X') count = 0; sum[k] += count; j++; } printf("%d\n", sum[k]); k++; } } 이게 처음 코드이다. 아니 진짜 ..

백준 A+B-4 문제 10951번 EOF

이 문제는 문제 풀이의 조건에 끝나는 조건이 없다. 주어진 입력파일을 가지고 입력을 받을때 더이상 읽을 데이터가 없는경우 즉 파일의 끝일때를 EOF(end of file )이라고 한다. 이 문제는 더이상 읽을 데이터가 없을 때 반복문을 종료 시켜야 한다. 원래 scnaf함수는 엔터를 칠때마다 다음 입력으로 넘어가는데 사실 컴퓨터는 개행역시 하나의 문자로 받아서 처리하기 때문이다. 즉 우리가 문자열의 끝에 널을 넣어주는 느낌으로 입력할때 더이상 읽을게 없을때를 찾아야만한다. 입력을 끝까지 읽은 후에 그 다음거에 오는경우 EOF인 것이다. 일반적인 키보드에서는 EOF상태를 전송 할 수 없으므로 윈도우에서는 Ctrl Z 리눅스는 Ctrl + D이다. scanf에서는 끝에 도달하면 -1을 반환하고 와일문의 조건..

백준 2178번 미로탐색 (C++)

문제최단 거리 이야기가 나온다는 것을 보고 bfs문제임을 알 수가 있다.정답 코드#include #include #include #include using namespace std; const int dx[] = {0,1,0,-1}; const int dy[] = {1,0,-1,0}; int main() { int n,m; string s; ios :: sync_with_stdio(0); cin.tie(0); cin >> n >> m; vector arr(n + 1,vector(m + 1,0)); vector vis(n + 1,vector(m + 1,0)); for (int i=0;i > s; for (int j=0;j < m; j++) { arr[i+ 1][j + 1] = ..

728x90