Algorithm

프로그래머스 - 카드 짝 맞추기 / C++

wizi 2021. 3. 24. 10:01

programmers.co.kr/learn/courses/30/lessons/72415

 

코딩테스트 연습 - 카드 짝 맞추기

[[1,0,0,3],[2,0,0,0],[0,0,0,2],[3,0,1,0]] 1 0 14 [[3,0,0,2],[0,0,1,0],[0,1,0,0],[2,0,0,3]] 0 1 16

programmers.co.kr

2021 kakao blind recruitment 문제였다.

 

부르트포스와 bfs를 사용하여 문제를 해결하였다.

 

문제풀이: 

1. 카드의 짝 만큼 permutation을 돌린다. (next_permutation 사용)

2. 카드의 조합을 순서대로 찾아가며 bfs로 짝을 찾아 카드를 지운다.

3. 최소가 나오는 경우를 찾아야하므로 모든 경우를 다 본다.

 

만약 (1카드, 2카드, 3카드) 3종류의 카드 세트가 있다면 

순열이 (1,2,3) (1,3,2) (2,1,3) (2,3,1) (3,1,2) (3,2,1) 총 6개가 될것이다.

이를 토대로 전역변수로 현재 커서의 위치를 저장하면서 bfs를 돌리면서 

두 카드중 가까운카드 -> 먼 카드 순으로 돌면서 총 몇번의 명령어를 입력했는지 확인한다.

 

코드: