일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 보석 쇼핑
- SW ExpertAcademy
- 스타트 택시
- 15686번
- 1038번
- 프로그래머스
- HTML 기초
- 19238번
- QueryDSL 기초
- 미세먼지 안녕!
- 12865번
- 파이썬
- 거울 설치
- SW Expert Academy
- 베스트엘범
- 빛의 경로 사이클
- 백준 알고리즘
- 17144번
- 키패드 누르기
- python
- 어른 상어
- 감소하는 수
- 1789번
- 경주로 건설
- 2020 카카오 인턴십
- 12869번
- 수식 최대화
- 16234번
- 14499번
- 9095번
Archives
- Today
- Total
보물창고 블로그
SW Expert Academy 2819 격자판의 숫자 이어 붙이기 본문
728x90
문제 링크: https://swexpertacademy.com/main/code/problem/problemSolver.do?contestProbId=AV7I5fgqEogDFAXB
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
단순히 DFS로 모든 격자판 위치에서 7자리 숫자를 만들어서 중복을 제거하면 되는 문제였다. 처음에는 시간 초과를 하였는데, w7을 list로 만들어서 7자리 숫자가 이미 w7에 있는지 확인하였는데, w7을 set으로 선언하고 추가하는 식으로 하였더니 시간 초과가 뜨지 않고 통화하였다. 나의 풀이는 아래와 같다.
def solution(map1,x,y,sub):
global w7
dx=[-1,0,1,0]
dy=[0,-1,0,1]
if len(sub)==7:
w7.add(sub)
return
for i in range(4):
nx=x+dx[i]
ny=y+dy[i]
if -1<nx<4 and -1<ny<4:
solution(map1,nx,ny,sub+map1[nx][ny])
t=int(input())
for test in range(1,t+1):
w7=set()
map1=[]
for _ in range(4):
map1.append(input().split())
for i in range(4):
for j in range(4):
solution(map1,i,j,'')
answer=len(w7)
print('#{} {}'.format(test,answer))
'알고리즘 풀이 > SW Expert Academy' 카테고리의 다른 글
SW Expert Academy 4014. [모의 SW 역량테스트] 활주로 건설 (0) | 2020.01.17 |
---|---|
SW Expert Academy 1868. 파핑파핑 지뢰찾기 (0) | 2020.01.16 |
SW Expert Academy 1961 숫자 배열 회전 (0) | 2020.01.03 |
SW Expert Academy 4613 러시아 국기 같은 깃발 (0) | 2020.01.03 |
삼성 SW Expert Academy 5653. [모의 SW 역량테스트] 줄기세포배양 (0) | 2020.01.02 |
Comments