적록색약 - 10026번
bfs로 문제를 해결하였다. graph를 2개, bfs함수를 3개를 만들어서 사용했다. 한 for 루프 안에서, 정상인의 결과를 구하고, 적록색약인 사람의 결과를 따로 구해줬다. import sys from collections import deque t = int(input()) graph = [[0] * 101 for _ in range(101)] special_graph = [[0] * 101 for _ in range(101)] d = [[1, 0], [-1, 0], [0, 1], [0, -1]] for y in range(t): inn = sys.stdin.readline() for x in range(t): graph[y][x] = inn[x] special_graph[y][x] = inn[x..
2022. 10. 4.
미로탐색 - 2178 번
bfs로 해결하였다. 처음 시작점으로부터 마지막 점까지의 계층을 구분짓기 위하여 while 문 다음에 데큐 크기를 중심으로 for 문을 하나 끼워줬다. import sys from collections import deque # y_axis == n, x_axis == m y_axis, x_axis = map(int,input().split()) # 방향 d = [[1,0],[-1,0],[0,1],[0,-1]] graph = [[0]*101 for _ in range(101)] visited = [[False]*101 for _ in range(101)] for y in range(y_axis): a = sys.stdin.readline() for x in range(x_axis): graph[y][x]..
2022. 10. 4.
유기농 배추 - 1012번
BFS로 해결하였다. x, y로 나타낼 수 있는 문제의 어려웠던 점은 2중 배열로 표현을 하거나, 인덱스로 접근할 때, y와 x의 위치를 바꿔서 사용해줘야 한다는 점이다. 가로 5칸, 세로 3칸을 x = 5, y = 3이라 할 수 있다. 이것을 우리가 익숙한 좌표평면행태로 보고 싶다면 arr[5][3] 이 아니라 arr[3][5]모양으로 만들어줘야한다. (파이썬에서는 이런방식으로 array를 표현하지 않지만 편의상 이렇게 적었다.) arr[3][5]를 파이썬 식으로 표현하면 arr [ [ 0 ] * 5 for _ in range(3) ] 이고, arr = [[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]] 로 보인다. 만약 이 배열에서 x = 2, y = 1 에 ..
2022. 10. 4.