Skip to content

Commit

Permalink
post: [11주차_이가은] 🔄 페그 솔리테어
Browse files Browse the repository at this point in the history
  • Loading branch information
gani0325 committed Dec 30, 2023
1 parent 7ac03fe commit 82144a2
Showing 1 changed file with 77 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
---
title: 🐢 페그 솔리테어
author: gani0325
date: 2023-12-31 02:00:00 +09:00
categories: [알고리즘, 페그 솔리테어]
tags: [알고리즘, 백준, 골드4, 구현, 11주차, 이가은]
render_with_liquid: false
math: true
---

## 1. 문제 링크

[9207번: 페그 솔리테어](https://www.acmicpc.net/problem/9207)

<br>

## 2. 코드

```python

"""
[9207] 페그 솔리테어
💛 문제
페그 솔리테어는 구멍이 뚫려있는 이차원 게임판에서 하는 게임이다. 각 구멍에는 핀을 하나 꽂을 수 있다.
핀은 수평, 수직 방향으로 인접한 핀을 뛰어넘어서 그 핀의 다음 칸으로 이동하는 것만 허용된다.
인접한 핀의 다음 칸은 비어있어야 하고 그 인접한 핀은 제거된다.
현재 게임판에 꽂혀있는 핀의 상태가 주어진다.
이때, 핀을 적절히 움직여서 게임판에 남아있는 핀의 개수를 최소로 하려고 한다.
또, 그렇게 남기기 위해 필요한 최소 이동횟수를 구하는 프로그램을 작성하시오.
💚 입력
첫째 줄에 테스트 케이스의 개수 1 ≤ N ≤ 100이 주어진다. 각 테스트 케이스는 게임판의 초기 상태이다.
게임판은 모두 같은 모양을 가진다.
(예제 참고) '.'는 빈 칸, 'o'는 핀이 꽂혀있는 칸, '#'는 구멍이 없는 칸이다. 핀의 개수는 최대 8이며,
각 테스트 케이스는 빈 줄로 구분되어져 있다.
💙 출력
각 테스트 케이스에 대해서, 핀을 움직여서 남길 수 있는 핀의 최소 개수와
그 개수를 만들기 위해 필요한 최소 이동 횟수를 출력한다.
"""

# 현재 위치, cnt
def move(x, y, cnt):

dx=[0,0,1,-1]
dy=[1,-1,0,0]

if cnt >=0:
if pin_num == 0 or pin_num > cnt:
pin_num = cnt

for i in range(4):
nx = x + dx[i]
ny = y + dy[i]

if graph[nx][ny] == 'o':
nnx = nx+dx[i]
nny = ny+dy[i]



# 테스트 케이스의 개수
n = int(input())


graph = []
for _ in range(n):
for i in range(5):
graph.append(list(input()))
```

<br>

## 3. 해설

0 comments on commit 82144a2

Please sign in to comment.