일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 17144번
- 15686번
- 12865번
- 14499번
- 미세먼지 안녕!
- 빛의 경로 사이클
- QueryDSL 기초
- 베스트엘범
- SW Expert Academy
- 백준 알고리즘
- 9095번
- 보석 쇼핑
- python
- 16234번
- 파이썬
- 프로그래머스
- HTML 기초
- 감소하는 수
- 1789번
- 12869번
- 경주로 건설
- 수식 최대화
- 거울 설치
- 키패드 누르기
- 2020 카카오 인턴십
- 어른 상어
- 19238번
- 1038번
- 스타트 택시
Archives
- Today
- Total
보물창고 블로그
SW Expert Academy 2819 격자판의 숫자 이어 붙이기 본문
728x90
문제 링크: https://swexpertacademy.com/main/code/problem/problemSolver.do?contestProbId=AV7I5fgqEogDFAXB
단순히 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