본문 바로가기

반응형

level2

(2)
프로그래머스 순위 검색 [level2][2021][카카오] 문제를 풀 때 참고한 분의 블로그 https://loosie.tistory.com/265 -을 위한 조합을 생각해야 했다. 그 자리에서 dfs를 구현했다. depth = 0으로 두고 n개 중에서 n개를 뽑는 경우의 수를 체크했다. Key에 depth 별로 -을 뽑고 안 뽑고로 진행했다. => 1개의 info당 16개의 경우의 수가 나온다. void dfs(String pos, int depth, String[] info) { if(depth == 4) { if(!allInfo.containsKey(pos)) { in = new ArrayList(); in.add(Integer.parseInt(info[4])); allInfo.put(pos, in); }else { allInfo.get(pos).add(I..
프로그래머스 - 단체사진 찍기 [Level2] [ 카카오 2017 본선] [자바] 첫 25분의 고민 과정 3개의 모듈로 분해하기 문제를 읽고 가장 먼저 떠올린 것은 순열이었다. 조건을 파싱 해서 조건에 맞게 인원들을 배치시키고 순열의 결과를 얻어내고자 했다. 예를들어 라이언와 어피치의 거리가 0이라면 라이언와 어피치를 하나로 묶고 나머지 인원들을 배치시키는 방식으로 순열의 경우의 수를 구하는 것이다. 하지만 n개의 원소로 주어지는 data는 무려 100개까지도 주어질 수 있다. 이 모든 것을 파싱해서 캐릭터들을 묶어내는 것?은 불가하다고 판단했다. [ data로 주어질 수 있는 경우의 수는 어마무시하다. 조건 3개, 숫자 간격 0~6, 케릭터 2개를 뽑는 조합... ] 다행히도 친구들의 수는 8개로 고정적이다. 완전 탐색으로 순열을 고려하면 8!로 40320의 경우의 수가 존재한다. ..

반응형