진짜 여러 가지로 삽질한 문제
처음 문제를 본 후 주사위에 대한 조건을 세웠다.
#3개의 면이 보이는 주사위 : 맨 위 꼭짓점 4개
#2개의 면이 보이는 주사위 : 각 모서리 (n-1)*4 + (n-2)*4 개
#1개의 면이 보이는 주사위 : 평면 n*n-(4n-4) + (n*n-(3n-2))*4 개
여기서 나는 조합을 이용해 풀었다.
3개의 면이 보이는 주사위는 아래와 같이 6개 중 3개의 조합을 구한 후 주사위에서 서로 반대편 면이 함께 있는 조합은 삭제시킨 후 합을 구해서 sum_3에 append하는 방식이다.

위와 같은 풀이를 했을 때 생각지도 못한 문제가 발생했는데,
위와 같이 코드를 작성하였을 때 결과값이 아래와 같이 나타났다.
분명 1과 6이 함께 있는 tuple은 remove 되어야 하는데 (1,2,6), (1,3,6), (1,4,6)은 remove 되었는데 (1,5,6)은 그대로 남아 있는 것이다.
알고 보니 for i in y: 에서 y가 중간에 삭제되다 보니 정상적인 작동을 하지 못한 것이었다. 따라서 위와 같은 풀이는 포기하고 주사위 문제에서 정석인 아래코드를 통해 해결했다.
서로 마주보는 면은 나올 수 없기 때문에 두 면 중 하나씩만 고른다면 원하는 모양이 나올 수 있다.
2면이 보이는 주사위도 마찬가지로 풀 수 있지만 이미 작성해 놓은 코드가 있어서 수정하지 않았다.
'알고리즘 문제 > 그리디' 카테고리의 다른 글
[Java] 그리디 (햄버거 분배) (0) | 2023.02.19 |
---|---|
[Java] 그리디 - 최댓값 갱신 (주식) (0) | 2023.02.11 |
그리디 (신입 사원) (0) | 2022.02.14 |
그리디 (멀티탭 스케줄링) (0) | 2022.01.29 |