문제
시작방에서 출발하여 길을 찾아서 끝방으로 가는 것이 목적인데, 아래 그림의 경우에는 시작방에서 끝 방으로 갈 수가 없다. 부득이 검은 방 몇 개를 흰 방으로 바꾸어야 하는데 되도록 적은 수의 방의 색을 바꾸고 싶다. 아래 그림은 n=8인 경우의 한 예이다. 위 그림에서는 두 개의 검은 방(예를 들어 (4,4)의 방과 (7,8)의 방)을 흰 방으로 바꾸면, 시작방에서 끝방으로 갈 수 있지만, 어느 검은 방 하나만을 흰 방으로 바꾸어서는 불가능하다. 검은 방에서 흰 방으로 바꾸어야 할 최소의 수를 구하는 프로그램을 작성하시오. 단, 검은 방을 하나도 흰방으로 바꾸지 않아도 되는 경우는 0이 답이다. 입력첫 줄에는 한 줄에 들어가는 방의 수 n(1≤n≤50)이 주어지고, 다음 n개의 줄의 각 줄마다 0과 1이 이루어진 길이가 n인 수열이 주어진다. 0은 검은 방, 1은 흰 방을 나타낸다. 출력
예제 입력과 출력정답
흰방에 도착하면 이동거리는 이전과 같고 먼저 흰방을 방문하기 위해 appendleft를 사용합니다. 백준 1261 알고스팟과 똑같은 문제입니다. 백준 알고리즘 2665번 : https://www.acmicpc.net/problem/2665 2665번: 미로만들기 첫 줄에는 한 줄에 들어가는 방의 수 n(1≤n≤50)이 주어지고, 다음 n개의 줄의 각 줄마다 0과 1이 이루어진 길이가 n인 수열이 주어진다. 0은 검은 방, 1은 흰 방을 나타낸다. www.acmicpc.net https://www.acmicpc.net/problem/2665
BFS 1. 시작지점(0, 0)에서 bfs를 한다. (visited = 검은 방을 흰 방으로 바꾼 횟수) - 해당 위치가 흰 방(1)이면 이전 visited의 값으로 초기화, appendleft(흰 방 먼저 탐색) - 해당 위치가 검은 방(0)이면 이전 visited에서 1을 더해서 초기화, append 2. x, y 가 도착지점(N-1, N-1)이면 return visited[x][y] 흰 방을 먼저 탐색하기 때문에 처음 도착지점에 도착한 visited의 값은 최솟값이 된다. mimi_s.ico 0.12MB 이번엔 저번에 구현했던 미로 게임을 나름 업그레이드해봤다. https://jinho-study.tistory.com/1081 기본적인 게임 개발 기술(실시간 처리, 키 입력 받기, 미로 게임) 이번엔 tkinter를 사용해서 기본적인 게임 개발 기술(실시간 처리, 키 입력 받기, 미로 게임)에 대해 알아보자. 1 실시간 처리 구현하기 파이썬에서는 after() 명령으로 실시간 처리를 수행할 수 있다 jinho-study.tistory.com 전체 코드는 아래와 같다.
게임 종료와 다시 시작 관련해서 기능을 추가하고 구조를 조금 수정했다.
게임 진행 관리 부분 코드
pyinstaller용 코드와 명령어전체 코드
명령어
github: https://github.com/kimjinho1/Python-Game/blob/main/%EA%B8%B0%EB%B3%B8%EC%A0%81%EC%9D%B8%20%EA%B2%8C%EC%9E%84%20%EA%B0%9C%EB%B0%9C%20%EA%B8%B0%EC%88%A0/maze_game.ipynb kimjinho1/Python-Game Contribute to kimjinho1/Python-Game development by creating an account on GitHub. github.com |