분류 전체보기 112

sw expert 나뭇잎 닌자 문제

https://www.swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWrcxNbaMNwDFARG&categoryId=AWrcxNbaMNwDFARG&categoryType=CODE&&&&&& SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! www.swexpertacademy.com 우선 보다시피 정답자가 없음 내가 첫번째 정답자가 되길 바라며... #include #include #include #include using namespace std; int d_num = 0; int dif_age_min = 2000000000; int main(int argc, char*..

카테고리 없음 2019.06.05

2193 Dynamic -이친수 구하기

3 우선 첫글자는 무조건 1이고 두번째는 2이상일때는 무조건 0 세번째부터가 문제 3이 들어오면 100에서 시작해서 101 110 ㅇ이런식으로 갈때 조건을 검사해야하는듯.. //이런줄 알았음 조건을 다 계산해야 하는 줄 알았는데 역시 내가 점화식을 못세운탓.. 되게 간단하게 풀 수 있는 문제였다.. 우선 경우의 수를 예시로 쫌 보자 3자리의 경우 100 101 4자리의 경우 1000 1001 1010 5자리의 경우 10000 10001 10010 10100 10101 이게 다이나믹인걸 아니까 그 전과 어떤 관계가 있는지 잘봐야함 다이나믹인지 모를때는 뭐..알아서 알아내야지 큼 전과의 관계를 보면 n자리의 경우 n-1자리에서 마지막이 0으로 끝나면 뒤에 0또는 1이 붙는게 가능하고 마지막이 1로 끝나면 0..

1260 DFS BFS

벡터를 사용해 인접리스트를 해볼까 했지만 나중에 비교하거나 할때 인접행렬이 편할 것 같아서 인접행렬로 풀어보겠음 밑에는 C++ 2차원배열 동적할당 하는 방법 알고리즘보다 배열때문에 힘들ㅇㅓㅆ음 이지윤이 동적할당하는거 도와줘서 어찌어찌 함 #include #include #include #include using namespace std; int **arr; int *visit; void dfs(int start, int size_arr_num, bool flag) { stack st; visit = new int[size_arr_num]; memset(visit, 0, sizeof(int)*(size_arr_num)); st.push(start); visit[start] = 1; cout > v2; ar..

DFS & BFS

*이 포스팅은 백준 알고리즘 1260을 기준으로 코드를 설명하므로 입력/출력값에 대한건 백준으로 ㄱㄱ DFS -깊이 우선 탐색 루트노드(혹은 임의의 노드)에서 시작해 다음 branch로 넘어가기 전에 해당 branch를 완벽하게 탐색하는 방법 =>넓게(wide) 탐색하기 전에 깊게(deep) 탐색하는 것이다. =>사용하는 경우: 모든 노드를 방문 하고자 하는 경우에 이 방법을 선택한다. ->깊이 우선 탐색(DFS)이 너비 우선 탐색(BFS)보다 좀 더 간단하다. ->단순 검색 속도 자체는 너비 우선 탐색(BFS)에 비해서 느리다. 그래프 탐색의 경우 어떤 노드를 방문했었는지 여부를 반드시 검사 해야 한다는 것이다. 이를 검사하지 않을 경우 무한루프에 빠질 위험이 있다. 방문한 다음 다시 backtrack..

알고리즘 2019.05.28

Jsp 기초

지시어의 형식은 으로 사용되며 지시어는 page 지시어, include 지시어, taglib 지시어로 나누어 진다. 1) page 지시어 형식 ->속성에는 무엇이 있을까 2) include 지시어 include 지시어는 특정한 JSP, HTML 파일을 해당 페이지에 삽입할 수 있도록 하는 기능을 제공하며 다음 형식으로 사용된다. 출처: https://rank01.tistory.com/32?category=487064 [JAVA FOR JAVA] //과제 내준거 해석을 하나씩 해서 login verify 만들어봐야지

카테고리 없음 2019.05.27

sw expert 1245번 문제

어떻게 풀어야할까 고민했지만 쉽게 떠오르지 않아 결국 검색.. 이분탐색을 이용해야 함 처음에 왼쪽 오른쪽을 어떻게 정해야하나 했는데 그냥 i와 i+1이 있으면 i가 왼쪽 i+1이 오른쪽 물체는 두개 중간에 있다고 생각하면 되는듯 그래서 이걸 두개씩 계속 호출하면 됨 -처음에는 float형을 썼었는데 이거보고 double 로 고침 오차범위가 줄어든다고 한다. https://www.acmicpc.net/blog/view/37 부동소숫점 오류 게시판에 올라오는 "이 코드는 왜 틀렸나요?" 류의 질문 중 부동소숫점 오류 때문에 틀리는 경우가 꽤 많이 보여서 간단하게 몇 가지 써봅니다. 0. 부동소숫점 오류 모든 실수를 8byte, 혹은 12~16byte의 변수에 모두 담을 수 있다고 생각하시는 분은 없겠죠. 변..

알고리즘 2019.05.17

완전 탐색(brute-forse)과 Greedy algorithm

-반복과 재귀 재귀 -재귀는 주어진 문제의 해를 구하기 위해 동일하면서 더 작은문제의 해를 이용하는 방법 - 함수 호출은 메모리 구조에서 스택을 사용함 ->재귀 호출은 반복적인 스택 호출을 의미하므로 메모리와 속도에서 성능 저하 발생함 *재귀가 반복보다 추가적인 메모리와 연산을 발생시킴 -완전탐색 완전 탐색의 경우 모든 경우의 수를 다 확인해야함 Ex)Tsp 문제에서 N=12이상이면 시간 복잡도가 폭발적으로 증가함 ->재귀호출을 이용해서 tsp 완전탐색 -요소의 크기가 작을 때는 빠르게 답을 찾아낼 수 있음 -Greedy algorithm 문제 제시: 거스름돈을 줄때 지폐와 동전의 수를 최소화하기 -최적해를 구하는데 사용되는 방법 -여러 경우중 하나를 선택할 때마다 그 순간에 최적이라고 생각되는 것을 선..

알고리즘 2019.05.17

백준 dynamic programming 7579 번

혹시 누군가 백준 알고리즘을 풀다 이것을 보게된다면 다른 사람의 블로그를 봐주세요.. 완전한 스터디 목적이므로 쫌 조잡한 부분이 많습니다 중간중간 계속 다른곳으로 새기 때문에 깔끔하게 풀이를 보고싶은분은 다른 블로그를 참고하길 *중간에 헤맨것 까지 다 나와있으므로 그냥 따라해서는 안됩니다.. 뻘짓 포함 우선 c++로 split하는 방법 ->사실 이게 필요 없었음..그래도 언젠가는 도움될 자료니까 나는 역시 자바가 편하긴하다..자바는 split함수 하나면 되는데.. string 배열 선언후, 배열로 입력받고 처리 split함수 직접 구현 (공백 단위로 문자 잘라서 vector에 넣음) std::istream_iterator(iss) 사용 우선 이렇게 있다고 함 그래도 c++쓰는거니까 라이브러리를 사용해 보..

백준 다이나믹 9095번

우선 c++ 로 해서 배열에 변수로 크기를 지정하는게 안된다 원래는 처음에 Testcase의 갯수를 받고 그만큼 입력을 받은후 나중에 출력해주려고 했었음 ->그래서 정답 배열을 따로 만들어 testcase의 갯수만큼 크기를 지정해 나중에 출력해주려 했으나 그건 자바에서 하는걸로..c는 되나.. =>동적할당 사용해도 되긴함 ex)cin>>test__num; int *num=new int[test_num]; 나중에 delete []num; //우선은 형식을 그냥 입력하자마자 출력하는 걸로 #include using std::cout; using std::endl; using std::cin; int main(void) { int test_num = 0; int i; int num; cin >> test_nu..