Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- Segment Tree
- MST
- 다음 API
- 인간이 그리는 무늬
- lower_bound
- 다이나믹 프로그래밍
- 이분탐색
- BOJ 2098
- boj
- 성화봉송주자
- upper_bound
- 캘리그라피
- 창훈쓰다
- multiset
- 언어의 온도
- 생활코딩
- 다음 지도 api
- BFS
- yolo
- 그리디 알고리즘
- 위상정렬
- 안드로이드 스튜디오
- 백트레킹
- 삼성 코딩테스트
- 영어회화 100일의 기적
- 외판원 순회
- 비트마스크
- 평창동계올림픽
- 성화봉송
- DP
Archives
- Today
- Total
Hoon222y
알고스팟 [PICNIC] - 완전탐색 본문
소풍을 가는데 싸우지 않기위해 친구끼리만 짝지어줄 수 있는 방법의 수를 출력하는 문제였다 .
내가 고민했던 방법은 2 가지였다.
1) 각각의 짝들을 하나의 수로 바꾸어 배열에 저장한 후 재귀적으로 반복하면서 겹치는 숫자가 없게하는 방법 .
- 설명이 애매하네 .. 나중에 파일 찾아볼 것. 그런데 구현하는 과정에 for문을 학생수 만큼 반복해야하는데 그걸 동적으로 구현하지 못하여 포기
2) 책에나온것처럼 재귀적으로 확인
- 결국 이걸로 풀긴 했는데 문제가 애매하다 .... 내가 짠 코드에서는 예제가 하나 틀리게 나오는데 정답처리가 되버렸다 ...
일단 내가 작성한 코드를 분석해보도록 하자.
재귀함수 부분만 보도록 하자. 나머지 부분은 그냥 횟수에 관한 코드이므로 .....
일단 전역변수로 학생의 1차원배열, 학생들이 짝이되는 2차원배열을 두었다.
이부분에서 핵심은 아래에 있는 for 문이다. 그런데
studentArr[i] = false;
studentArr[firstNum] = false; 이부분이 이해가 되지 않는다 ..... 그리고 이 코드대로 구현을 하면 분명 예제가 틀린대도 정답처리가 된다 ..
for문안에 재귀호출하는 부분으로 보이는데요
짝을 지어주고 (부분 문제 해결) 재귀호출을 한 후,
부분문제 해결 전 상태로 돌려 다른 해결을 하기 위해 처리해주는 것으로 보입니다!
라고 한다. 그런데 와닫지 않는 이유는 뭘까 ㅋㅋㅋ.........
'코딩 > BOJ & 알고스팟' 카테고리의 다른 글
[12865] - DP를 통한 접근 (0) | 2016.07.04 |
---|---|
알고스팟- [PICNIC] 문제 next_permutation으로 접근 (1) | 2016.06.28 |
알고스팟 [TRIANGLE] (0) | 2016.02.24 |
[2167] 2차원 배열의 합 (2차원 배열 동적할당, memset) (0) | 2016.02.14 |
[1008] A/B (소숫점 고정) (0) | 2016.02.12 |
Comments