generated from cotes2020/chirpy-starter
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
1 changed file
with
77 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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. 해설 |