- 1987-python & swift2023년 04월 24일
- 2료일
- 작성자
- 2023.04.24.:31
1. Python 풀이.
이건 BFS라고 생각했다. 왜? 상하좌우로 한칸씩 이동하면서 간 새곳이 이전에 간곳과 동일한지 체크하면 되기 때문이다.
import sys row , col = map(int, sys.stdin.readline().split()) arr = [] arr = [list(map(str, sys.stdin.readline().strip())) for _ in range(row)] dx = [-1,1,0,0] #왼오 dy = [0,0,-1,1] #아래 위 cnt = 1 def BFS(): # 한칸씩 최대 몇칸을 가는지를 구해야하기에 global cnt queue = set([(0,0,arr[0][0])]) while queue: a,b,c = queue.pop() cnt = max(cnt, len(c)) for i in range(4): nx = a + dx[i] ny = b + dy[i] if 0<=nx < row and 0<=ny< col and arr[nx][ny] not in c: queue.add((nx,ny,arr[nx][ny] + c)) BFS() print(cnt)
진짜 오랜만에(6개월만) 파이썬을 해서 하나도 모르겠다.. 인풋받는것부터..
처음에 cnt=1로 잡아두고 set으로 중복되는곳은 제거하였다.
큐에서 하나씩 빼주면서 그 왼오위아래를 투어하면서 만약 그 알파벳이 없으면 큐에 넣어주고
큐가 다빠질때까지 반복하면서 c는 그동안의 지난칸들의 알파벳을 저장하므로 둘중 더큰것을 비교를 통해 전역변수 cnt를 이용하여 구해줄수 있다!!
2. swift로 해볼까?
'알고리즘' 카테고리의 다른 글
1043-python (1) 2023.05.11 [프로그래머스]-이모티콘할인행사(swift) (0) 2023.05.04 알고리즘 2023kakaoblind-개인정보 수집 유효기간(python) (0) 2023.04.30 프로그래머스-귤고르기(Python) (0) 2023.04.29 1647 - swift (0) 2023.04.24 다음글이전글이전 글이 없습니다.댓글
스킨 업데이트 안내
현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)