이 블로그 검색

2018년 6월 28일 목요일

[백준 1091] 카드 섞기

[백준 1091 : 카드 섞기 ]

이 문제도 5달 전에 풀었다가 포기했었던 문제였나보다.
오늘 틀렸던 문제 다시풀기 중 풀게 되었다.

문제를 읽는데 헷갈려서 머리카락 한 10번은 쥐어짠듯.
아마 전에 풀었을때는 P배열이 각 카드가 최후에 어떤 사람한테 가야하는 지를 명시하는건데 이걸 모르고 풀었던 것 같다.

문제 설명도 좀 이상하다. 일단 초기 카드 순서가 어떻게 설정되어있는지를 알려주지 않는다.
알려주지 않아서 카드가 0~N-1순서로 되어있게 설정하고 풀었다.

내가 푼 방식은
카드 상태 배열 변수 한 개, 그 전 카드 상태 배열 변수 한 개,
카드 섞인 모습은 해시에 계속 저장, 각 카드의 섞인 모습 저장용 벡터 배열 한개.
이렇게 놓고 풀어따.

WHILE(1) 속에서 한 번이라도 HASH[카드가 섞인 모습]에 값이 있으면 종료하고
이건 P배열처럼 카드가 이동하지 않았다는 것이므로 -1을 출력한다.
만약 WHILE(1)이 끝나기 전에 각 카드의 벡터 마지막 인덱스가 각 P배열과 일치한다면
그때가 최소 횟수로 카드 섞었을 때이니 카운트를 출력하고 프로그램을 종료시켰다.

변수가 좀 난잡한데 나중에 좀 더 깔끔하게 수정해야겠다.
그리고 이번엔 그냥 라이브러리 다 사용했는데 연습할때는
최대한 라이브러리를 구현해서 하는 편인데 귀찮아서 그냥 해버렸다. 이것도 나중에 자료구조 직접 구현해서 다시 풀어봐야 할 듯.

댓글 1개:

[백준 16236] 아기 상어

[ 백준 16236 : 아기 상어 ] 2018 삼성전자 sw직무 하반기 기출문제입니다. 역대 삼성전자 기출문제가 그렇듯 역시나 BFS,DFS,완탐,DP,단순구현 입니다. 저는 문제를 단순히 BFS로 풀어갔습니다. 조건만 잘 지킨다면 한번에 ...