[BAEKJOON] N과 M(1), (2), (3), (4)
백트래킹 문제로 DFS로 해결해야 한다고 한다.
<1>
arr은 뽑은 애들을 저장하는 배열이다.
예를 들어 m이 2라면 두 개를 뽑아햐니까 그 두개를 저장할 배열이 arr
visited는 방문여부를 체크하여 중복없이 하기 위함이다.
n과 m, arr, visited는 main과 dfs 메소드 둘다 사용할 거기 때문에 public static으로 선언해주었다.
depth가 m과 같아지면 출력하는 형태이다. 즉, m이 2일때 2개 다 뽑으면 출력~
사실 완벽히 이해된게 아니라 ,, 일단 문제를 다양하게 풀어보며 이해해나가고자 한다,,
<2>
출력되는 게 다 오름차순이어야 한다고 한다.
그래서 dfs에서 depth가 m일때 출력하는 부분에 그냥 코드를 추가해주었다.
반복문을 돌려 앞이 뒤보다 크면 check를 1로 바꾼다. 즉, 오름차순인가를 확인하는거다.
아니면 1이기때문에, 1인 경우 return 해주어 출력을 안하고 종료시킨다.
<3>
같은 수를 여러번 골라도 된다고 하여서, 중복을 방지하기 위해 사용했던 visited 부분을 없애버렸다.
근데 시간초과가 계속 떠서 검색해보니 입출력 문제였다,,,,,
StringBuilder도 있다고 하는데, 더 익숙한 BufferedWriter를 사용하였다.
****** 시간초과 뜨면 BufferedWriter 사용할 것 !!
사실 알고리즘 수업시간에 모든 과제가 메모장 파일에 입출력해야해서
BufferedWriter와 BufferedReader를 사용하는 거였는데,,
맨날 전 과제 복붙해서 써서 익숙하지만 파바박 나오지 않는다. ㅠ_ㅠ
<4>
3번에다가 2번 합쳐주면 된다,,
,,문제는 다 풀었지만 다시 봐야할 듯 싶다 ,, 백트래킹 마스터의 길로 아자 ~