디시인사이드 갤러리

갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

한달동안 매달려도 못푼 알고리즘문제 풀어줄사람ㅜㅜ

프갤러(218.148) 2025.07.13 19:08:52
조회 232 추천 0 댓글 16
														

■ 문제 개요

도형 공장을 만들려고 합니다.

도형은 여러 층으로 쌓여 있고, 각 층은 네 개의 사분면으로 나뉘어 있습니다.

우리는 정해진 몇 가지 조각 종류를 조합해서 목표 도형을 만들려고 합니다.

여기서 도형을 만들기 위한 기본 규칙과 가능한 연산들이 정해져 있고,

이걸 활용해서 최소한의 연산으로 목표 도형을 완성하는 게 문제입니다.

시작 도형은 1층에 S 조각 4개가 꽉 차 있는 "SSSS"입니다.

한번 만든 도형은 무한히 재사용할 수 있습니다.

■ 1. 도형 구조

도형은 최대 5층까지 쌓을 수 있습니다.

각 층은 4개의 사분면으로 나누어져 있고 원형 연결성이 있습니다.

사분면 번호는 다음과 같습니다.

[4 (TL)] [1 (TR)]

[3 (BL)] [2 (BR)]

7ded8168f5dc3f8650bbd58b3684716dd260



즉, 하나의 도형은 5x4의 격자 구조로 이루어져 있습니다.

7ded8268f5dc3f8650bbd58b36897d68a8a9



■ 2. 조각 종류

도형을 구성하는 조각은 다음 네 가지입니다.

기호 | 설명

S | 고체 조각

P | 핀 조각

c | 크리스탈 조각

- | 빈 공간

■ 3. 도형 표현 방법

도형은 문자열로 표현합니다.

각 층은 4글자이며, 각각 사분면 1(TR), 2(BR), 3(BL), 4(TL) 순서로 조각을 나타냅니다.

여러 층이 있을 경우 :로 층을 구분합니다.

예를 들어:

S--- → 1층에서 1사분면 위치에 S 조각, 나머지는 빈 공간

-S--:----:---S → 1층 2사분면에 S, 3층 4사분면에 S 조각이 있다는 뜻입니다.

뒤쪽의 ---- 는 생략 가능합니다.

빈 도형은 null 대신 ---- 로 표현합니다.

■ 4. 물리 규칙

조각들이 안정적으로 쌓여야 하며, 다음 규칙을 따릅니다.

4.1 연결성

S 조각은 같은 층 내에서 상하좌우로 인접한 조각끼리만 연결됩니다.

ex) 모두 연결됨 SS--, S--S (1사분면과 4 사분면은 원형으로 이어져있습니다.)

c 조각은 같은 층 내 상하좌우, 그리고 위아래 층 동일 사분면 조각과 연결됩니다.

크리스탈 c 는 연결성이 강하지만 연약하므로, 어떤 형태로든 파괴된다면 연결된 모든 크리스탈 또한 함께 파괴됩니다.

이 파괴의 충격은 c 연결 간에만 전달됩니다. S 연결을 통해 파괴의 충격이 전달되지는 않습니다.

ex) 모두 연결됨 -c--:ccc-:-c--

S 조각과 c 조각끼리는 같은 층 내에서 상하좌우로 인접한 조각끼리만 연결됩니다.

ex) 2층에서만 연결됨 -S---:ScS-

P 조각은 연결이 없습니다.

4.2 지지 조건

1층에 있는 조각은 항상 지지됩니다.

ex) S---

위층 조각은 바로 아래층 같은 사분면에 조각이 있어야 지지됩니다.

ex) 지지됨 S---:S---, 지지되지 않음 S---:-S--

같은 층 내에서 이미 지지된 S 조각과 연결되어 있으면 지지를 받을 수 있습니다.

ex) 지지됨 S---:SS--

연결된 조각들로 이루어진 그룹 내에 지지된 조각이 하나라도 있으면 그룹 전체가 지지됩니다.

ex) 지지됨 S---:SS--:-S--

4.3 중력 및 불안정 조각 처리

지지되지 않는 모든 도형은 중력에 의해 아래층으로 쭉 떨어집니다.

지지되지 않는 S와 P 조각은 그룹 단위로 아래층으로 쭉 떨어집니다.

ex) 사례1 S---:S---:-S--:-S-- → SS--:SS-- 3,4 층이 떨어질때, 중간에 2층에서 연결되지 않습니다.

사례2 S---:P---:----:SPSS → SP--:P---:S-SS

크리스탈 조각 c 는 연약합니다. c 가 중력에 의해 이동하거나, 절단에 의해 분리된 경우

해당 c 조각은 연결된 그룹 c 조각들과 함께 모두 파괴됩니다.

ex) 사례1 ----:--cc:--Sc → --S-

사례2 cccc:----:cccc → cccc 두 크리스탈 그룹은 분리된 그룹임

이 과정을 안정될 때까지 반복합니다.

■ 5. 도형을 다루는 연산

아래 여섯 가지 연산으로만 도형을 가공할 수 있습니다.

5.1 회전 (rotate)

rotate(A: shape) -> shape

도형을 시계 방향으로 90도 회전합니다.

사분면 번호는 [1,2,3,4] → [4,1,2,3]로 바뀝니다.

예시)

rotate(PP--:-SS-) -> -PP-:--SS

5.2 적층 (stack)

stack(A: shape, B: shape) -> shape

A 도형 위에 B 도형을 쌓습니다.

B 도형의 c 조각은 쌓는 과정에서 중력에 의한 충격에 의해 모두 파괴됩니다.

두 도형을 쌓고, 5층을 초과하면 윗부분은 제거합니다.

다시 물리 적용합니다.

예시)

stack(SSSS:SS--, --SS:SSSS) -> SSSS:SSSS:SSSS

stack(cSSc, cccS) -> cSSc:---S 크리스탈 파괴

stack(SSSS:SSSS:SSSS, SSSS:SSSS:SSSS) -> SSSS:SSSS:SSSS:SSSS:SSSS 5층 초과 제거

stack(-SSS:-SSS:-SSS:-SSS:-SSS, PPPP:SSSS) -> PSSS:-SSS:-SSS:-SSS:-SSS (응용) 핀만 있는 레이어 제작 과정

5.3 절단 파괴 (destroy_half)

destroy_half(A: shape) -> shape

도형의 모든 층을 관통하도록 좌우 반으로 나눕니다.

좌측 도형 사분면 4(TL), 3(BL)을 파괴합니다.

우측 도형 사분면 1(TR), 2(BR)만 남깁니다.

다시 물리 적용합니다.

예시)

destroy_half(SSSS:SSSS) -> SS--:SS--

destroy_half(ScSc:ccSS) -> Sc--:cc--

destroy_half(ccSS:SccS) -> S--- 크리스탈 연쇄 파괴

destroy_half(PPPP:cccc) -> PP-- (응용) 핀만 있는 레이어 제작

destroy_half(cSSc:SSSS:cSSS) -> -S--:SS--:cS-- (응용) 1사분면에서 크리스탈 아래 공백 -Sc* 제작

destroy_half(S-S-:PSS-:ScS-) -> SS--:P---:Sc-- (응용) 2사분면에서 크리스탈 아래 공백 및 도형 낙하 S-c* 제작

*임의로 분류한 패턴명 입니다.

5.4 스왑 (swap)

swap(A: shape, B: shape) -> (shape, shape)

두 도형을 각각 절단(cut)해 좌우를 나눈 뒤, 물리 적용합니다.

A 도형의 우측과 B 도형의 좌측을 합쳐 새 도형을 만듭니다.

나머지 도형도 같은 방식으로 만듭니다.

각 새 도형에 물리 적용이 일어납니다.

예시)

swap(SSSS:SSSS,PPPP) -> (SSPP:SS--, PPSS:--SS)

swap(P---:S--S, P---:S--S) -> (P--S:S---, P--S:S---) 중력 적용

swap(SS--,--SS) -> (SSSS, ----)

swap(cc--:S--S, c--c:S--S) -> (cc-S:S---, S--S) 분리로 인한 크리스탈 파괴

5.5 핀 푸쉬 (pin_push)

pin_push(A: shape) -> shape

모든 도형을 1층씩 들어 올립니다.

1층에 기존 조각이 있는 위치마다 P 조각을 추가합니다.

만약 층이 5층을 초과했다면 윗부분은 파괴합니다.

이후 물리 적용합니다.

예시)

pin_push(SSSS) -> PPPP:SSSS

pin_push(-SPc:SSSS) -> -PPP:SPc:SSSS

pin_push(Sc--:SSSS:cccc:c---:c---) -> PP--:Sc--:SSSS 층 초과로 인한 크리스탈 연쇄 파괴

pin_push(ccP-:cSP-:cSS-:c---:c---) -> PPP-:-SP-:--P-:-SS- 분리 원리

pin_push(cc--:cP--:cP--:cP--:cS--) -> PP--:-P--:-P--:-P-- 도형 파괴 원리

pin_push(ccc-:c-S-:c-c-:c---:c---) -> PPP-:--S- 세컨드 크리스탈 파괴

pin_push(cccc:cccc:cccc:cccc:cccc) -> PPPP (응용) 핀 레이어 제작

pin_push(c-P-:cScS:c---:c---:c---) -> P-P-:--P-:-ScS (응용) 집게발* 제작

pin_push(cccP:SPcS:cSc-:--c-:--c-) -> PPPP:-P-P:S--S:cS-- (응용) 핀 게이트* 제작

pin_push(ccSP:SccS:PScc:ScSc:---c) -> PPPP:-SSP:S--S:P---:ScS- (응용) 도형 게이트* 제작

pin_push(S-Sc:PScc:S-Sc:ScSc:---c) -> PSPP:S-S-:P-S-:S---:ScS- (응용) 드롭+게이트* 제작

*임의로 분류한 패턴명 입니다.

5.6 크리스탈 생성 (crystal_generator)

crystal_generator(A: shape) -> shape

도형의 몇 층이 최상층인지 검사합니다.

1층부터 그 최상층까지의 빈 공간(-)과 P 조각을 모두 c 조각으로 바꿉니다.

예시)

crystal_generator(SSSS) -> SSSS

crystal_generator(P-S-:SP--) -> ccSc:Sccc

crystal_generator(SPc-) -> Sccc

■ 6. 게임 규칙과 목표

시작 도형은 1층에 S 조각 4개가 꽉 차 있는 "SSSS"입니다.

한번 만든 도형은 무한히 재사용할 수 있습니다.

■ 7. 문제

문제 1. 도형 제작 가능 여부

is_craftable(target: str) -> bool

무작위 도형이 문자열 입력으로 들어올 때,

시작 도형과 위 연산들만 써서 목표 도형을 만들 수 있는지 판단하세요.

예시)

"SSSS" -> True

"----" -> True

"PPPP:SSSS:cccc" -> True

"----:SSSS" -> False

"S---:SSSS" -> True

"cPSP:ScSP" -> True

"S---:cccc" -> False

"-S--:PS--" -> False

고급 예시)

"cS--:-S--:cS--" -> False

"cS--:-S--:SS--:cS" -> False

"-S--:SS--:cS--" -> True

"SS--:-S--:cS--" -> True

"-S--:SS--:-S--:cS--" -> True

"PS--:-S--:SS--:-S--:cS--" -> True

"SS--:-S--:SS--:-S--:cS--" -> True

"P-PP:SSSS:P--P:PcS-:ScSS" -> True

"P-P-:--P-:-ScS" -> True

"-S--:-S--:-SS-:SScS" -> True

"PP--:PS--:S-SS:P---:ScS-" -> False

문제 2. 최적 제작 과정 (도전 과제)

craft_sequence(target: str) -> List[str]

무작위 제작 가능한 도형이 문자열 입력으로 들어올 때,

목표 도형을 만드는 최소 연산 순서를 문자열 리스트로 출력하세요.

도형의 출력은 문자열 표현 방법을 준수합니다.

정답이 여러 개일 수 있습니다.

예시)

입력: "SS--:SS--"

출력:

[

"stack(SSSS, SSSS) -> SSSS:SSSS",

"destroy_half(SSSS:SSSS) -> SS--:SS--"

]

입력: "cc--:cc--"

출력:

[

"stack(SSSS, SSSS) -> SSSS:SSSS",

"destroy_half(SSSS:SSSS) -> SS--:SS--",

"crystal_generator(SS--:SS--) -> SScc:SScc",

"rotate(SScc:SScc) - > SccS:SccS",

"rotate(SccS:SccS) - > ccSS:ccSS",

"destroy_half(ccSS:ccSS) -> cc--:cc--"

]

7ded8368f5dc3f8650bbd58b368277686926


문제 3. 일반화 (도전 과제)

도형의 구조가 최대 5층, 4사분면인 구조를 넘어서

n층, m사분면 에서도 문제 1, 2가 동작하도록 일반화하시오. (0 < n <= 20, 0 < m <= 20)

■ 8. 참고 사항

이 모든 규칙과 연산은 Shapez2 게임의 룰을 기반으로 하며, 논리가 충돌할 경우 원작 게임의 규칙을 우선시 합니다.

연산의 입력중 하나라도 완전히 비어있다면 ---- 아무 동작도 하지 않습니다.

캐싱 및 룩업 테이블 등 모든 최적화 기법의 사용이 허용됩니다.

현재 문제는 정답이 완전히 확정되지 않았습니다.



글자수 제한때매 예시몇개랑 가독성 날림
한달동안 매달렸는데 감도못잡겠음 너무 복잡함 2,3 번 문제 무시하고 1번이라도 풀어주실분

추천 비추천

0

고정닉 0

0

댓글 영역

전체 댓글 0
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 며느리, 사위되면 시댁, 처가에 잘할 것 같은 스타 운영자 25/10/13 - -
AD iPad Pro 사전예약!! 운영자 25/10/17 - -
2871702 리액트 훅품 그냥 문서만 봐도 나와있잖아 [3] ㅆㅇㅆ(124.216) 07.14 129 0
2871701 프갤 최대 미스테리 ♥지나가던길냥덩♥갤로그로 이동합니다. 07.14 68 0
2871699 직군이 어딨냐 걍 씨발 먹고 살려면 해야지. [5] ㅆㅇㅆ(124.216) 07.14 126 0
2871697 아스카는 프레임워크 공부 안함? React/Vue가 그런 원리임 [8] ㅆㅇㅆ(124.216) 07.14 129 0
2871696 저장용 ♥지나가던길냥덩♥갤로그로 이동합니다. 07.14 61 0
2871695 js 파일 만지다가 기가 막힌 아이디어가 떠올랐는데 [8] 아스카영원히사랑해갤로그로 이동합니다. 07.14 119 0
2871694 DTO 설계 실수했다고 모든 층이 망가져버렸노 [3] ㅆㅇㅆ(124.216) 07.14 90 0
2871693 윤석열 이재명 선거 투표자 재산과 지지율 발명도둑잡기갤로그로 이동합니다. 07.14 69 0
2871692 멍퀴님이 원하시는 코박죽 맘껏 즐기시길❤+ [5] ♥지나가던길냥덩♥갤로그로 이동합니다. 07.14 108 0
2871690 [단독]삼부토건 '尹정부 출범' 직후 '우크라 단체' 수천만원 발명도둑잡기갤로그로 이동합니다. 07.14 66 0
2871689 코박냥⭐+ [1] ♥지나가던길냥덩♥갤로그로 이동합니다. 07.14 76 0
2871688 [매드맥스] 망한 세상의 지배자 《임모탄 조》 발명도둑잡기갤로그로 이동합니다. 07.14 48 0
2871687 냥덩이를 현실에서 만나고 싶다면? [1] ♥지나가던길냥덩♥갤로그로 이동합니다. 07.14 90 0
2871686 냥덩이 쟤는 저렇게 멍청해서 어떻게 살까 [1] ㅆㅇㅆ(124.216) 07.14 92 0
2871684 ai ㄹㅇ 어떻게 잘 쓰고있는거임 [6] 공기역학갤로그로 이동합니다. 07.14 132 0
2871683 ㅋㅅㅋ ♥지나가던길냥덩♥갤로그로 이동합니다. 07.14 67 0
2871682 벌써 9시구낭.. ♥지나가던길냥덩♥갤로그로 이동합니다. 07.14 58 0
2871680 나냥덩은 우리 모두의 마음속에 있답니당⭐+ ♥지나가던길냥덩♥갤로그로 이동합니다. 07.14 62 0
2871679 오늘도 틀튜브 보고 가짜뉴스 퍼뜨리는 냥덩이 발명도둑잡기갤로그로 이동합니다. 07.14 61 1
2871677 사방신이 프갤늘 지켜야하거늘... [3] 개멍청한유라갤로그로 이동합니다. 07.14 97 0
2871676 나토리는 어디로 여행을 떠났을까 개멍청한유라갤로그로 이동합니다. 07.14 67 0
2871674 모스탄 미국 대사 살인계획 의심사건 발생 외교갈등으로 비화하나 ♥지나가던길냥덩♥갤로그로 이동합니다. 07.14 89 0
2871672 [긴급]모스탄 미국 대사 살인계획의심 실탄 권총소지 범인검거 ♥지나가던길냥덩♥갤로그로 이동합니다. 07.14 82 0
2871671 가진것도, 아는것도 없는 23살 인생에 낭만한번 찾아볼까요?? [2] ㅇㅇ(223.38) 07.14 152 0
2871669 심오하구낭.. ㅁ무슨뜻일깡..? [1] ♥지나가던길냥덩♥갤로그로 이동합니다. 07.14 77 0
2871667 조달청 공인인증용 지문인식기가 윈도우 헬로 겸용이 없네 발명도둑잡기갤로그로 이동합니다. 07.14 63 0
2871666 프갤엔 재미있는 녀석들이 없어 그저 복제품들만 즐비하지 [1] ♥지나가던길냥덩♥갤로그로 이동합니다. 07.14 87 0
2871665 회사창업하면 레벨제로 할려고 [2] 헬마스터갤로그로 이동합니다. 07.14 91 0
2871664 현실에서 냥덩이 안만난걸 감사하게 여겨라 [2] 프갤러(121.186) 07.14 101 0
2871663 it 프리랜서들 이직할때 어디서 일구함? [4] 프갤러(117.110) 07.14 240 0
2871662 냥덩이 점마 진짜 8개월 따라다닌 유동 맞았는갑네 ㅆㅇㅆ(124.216) 07.14 76 0
2871661 솔직히 현실에서 나님 만나면 눈도 못마주칠 찐따들이 [6] ♥지나가던길냥덩♥갤로그로 이동합니다. 07.14 107 0
2871660 물아일체 ♥지나가던길냥덩♥갤로그로 이동합니다. 07.14 55 0
2871659 근데 세상 좋아졌다. 번역기 좋아지니까 옛날에 영어 원서 읽는게 [2] ㅆㅇㅆ(124.216) 07.14 94 0
2871658 나님 애널 피궁해서 일찍 누울게양.. ♥지나가던길냥덩♥갤로그로 이동합니다. 07.14 69 0
2871657 커널 객체 링커 된거 다 끊어버리니까 [1] 류도그담당(58.239) 07.14 101 0
2871656 냥덩이는 필연적 존재당⭐+ ♥지나가던길냥덩♥갤로그로 이동합니다. 07.14 56 0
2871655 내가 생각이 짧았노 한국은 관공서때문에 IT쪽 수주가 많으니까 [3] ㅆㅇㅆ(124.216) 07.14 101 0
2871654 나님.. 드디어 악질스토커 멍유를 해치운건강..? ♥지나가던길냥덩♥갤로그로 이동합니다. 07.14 63 0
2871653 근데 왜 자바 8이 메인일까 LTS 버전이 메인이면 [3] ㅆㅇㅆ(124.216) 07.14 118 0
2871652 맞아 그래 나야 ㅋ 가연아갤로그로 이동합니다. 07.14 62 0
2871651 잠이 와요 류도그담당(58.239) 07.14 56 0
2871650 미제 식민지 한국 전작권 전환 금지 법안 [1] 발명도둑잡기갤로그로 이동합니다. 07.14 86 1
2871649 2찢명 담당일진 입국에 좌파 유튜버 범죄행위 신고당해 ♥지나가던길냥덩♥갤로그로 이동합니다. 07.14 78 0
2871648 한국 프로그래밍 커뮤니티는 아직도 15년전 프로그래밍 메타를 [3] ㅆㅇㅆ(124.216) 07.14 130 0
2871646 2찢명 술판에 숨겨져 있던 충격적인 장면들 ♥지나가던길냥덩♥갤로그로 이동합니다. 07.14 77 0
2871645 망유야 나님 갤록에 남긴 너의 어두운면 풀어? [2] ♥지나가던길냥덩♥갤로그로 이동합니다. 07.14 74 0
2871644 미국 모스탄 대사 공항에 권총 발견 극좌테러모의 했나 수사 필요성 대두 [1] ♥지나가던길냥덩♥갤로그로 이동합니다. 07.14 103 0
2871643 모스탄 휴거 소동도 넓게 보면 사실 양당제의 폐해입니다 발명도둑잡기갤로그로 이동합니다. 07.14 70 0
2871642 ❤✨☀⭐⚡☘♥+나님 시작합니당♥+☘⚡⭐☀✨❤ [2] ♥지나가던길냥덩♥갤로그로 이동합니다. 07.14 69 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

디시미디어

디시이슈

1/2