728x90
> 파이썬
📖 문제 : D4 - 격자판의 숫자 이어 붙이기 (Python)
4×4 크기의 격자판이 있다. 격자판의 각 격자칸에는 0부터 9 사이의 숫자가 적혀 있다.
격자판의 임의의 위치에서 시작해서, 동서남북 네 방향으로 인접한 격자로 총 여섯 번 이동하면서, 각 칸에 적혀있는 숫자를 차례대로 이어 붙이면 7자리의 수가 된다.
이동을 할 때에는 한 번 거쳤던 격자칸을 다시 거쳐도 되며, 0으로 시작하는 0102001과 같은 수를 만들 수도 있다.
단, 격자판을 벗어나는 이동은 가능하지 않다고 가정한다.
격자판이 주어졌을 때, 만들 수 있는 서로 다른 일곱 자리 수들의 개수를 구하는 프로그램을 작성하시오.
[입력]
첫 번째 줄에 테스트 케이스의 수 T가 주어진다.
각 테스트 케이스마다 4개의 줄에 걸쳐서, 각 줄마다 4개의 정수로 격자판의 정보가 주어진다.
[출력]
각 테스트 케이스마다 ‘#x ’(x는 테스트케이스 번호를 의미하며 1부터 시작한다)를 출력하고, 격자판을 이동하며 만들 수 있는 서로 다른 일곱 자리 수들의 개수를 출력한다.
내 코드
dy = [-1, 0, 1, 0]
dx = [0, -1, 0, 1]
T = int(input())
def move(y, x, cnt, string):
global numbers
if cnt == 6:
numbers.append(string)
else:
for i in range(4):
yy, xx = y + dy[i], x + dx[i]
if 0 <= yy < 4 and 0 <= xx < 4:
move(yy, xx, cnt + 1, string + str(board[yy][xx]))
for test_case in range(1, T + 1):
board = [list(map(int, input().split())) for _ in range(4)]
numbers = []
for y in range(4):
for x in range(4):
move(y, x, 0, str(board[y][x]))
print(f'#{test_case} {len(set(numbers))}')
swea
https://swexpertacademy.com/main/main.do
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
728x90
'SAMSUNG > SSAFY 준비 (swea)' 카테고리의 다른 글
[SWEA 1861번] D4 - 정사각형 방 (Python) (0) | 2023.11.07 |
---|---|
[SWEA 1218번] D4 - 괄호 짝짓기 (Python) (0) | 2023.11.07 |
[SWEA 1226번] D4 - 7일차 미로1 (Python) (0) | 2023.11.07 |
[SWEA 1210번] D4 - ladder1 (Python) (0) | 2023.11.07 |
[SWEA 1249번] D4 - 보급로 (Python) (0) | 2023.11.07 |