1d1a

    [python] SWEA - 2805. 농작물 수확하기

    [python] SWEA - 2805. 농작물 수확하기

    🤔문제 해결 💻소스 코드 T = int(input()) for test_case in range(1, T + 1): N = int(input()) farm = [list(map(int, list(input().strip()))) for _ in range(N)] m = N // 2 # 중심 answer = 0 for i in range(m+1): # 위아래가 대칭이므로 절반까지만 구한다. for j in range(m - i, m + i + 1): # 중심을 기준으로 왼쪽으로 1칸, 오른쪽으로 1칸 범위를 늘려 나간다. answer += farm[i][j] + farm[N-i-1][j] print(f'#{test_case} {answer - sum(farm[m])}') # 가운데를 두번 더해줬으므로 한번..

    [python] 백준 - 1325. 효율적인 해킹

    [python] 백준 - 1325. 효율적인 해킹

    🤔문제 해결 S2 | 그래프, BFS(DFS) 단순한 그래프 문제였는데 전부다 시간초과 발생.... 다른 분들 제출한것도 보니까 대부분 시간초과이다. (그래서 pypy3로 제출하니 성공) 풀이방법은 인접리스트 생성 (이 문제에서는 a->b가 아니라 b->a 이다) 모든 노드에 대해서 BFS를 돌린다. 그 때 몇개의 노드를 돌았는지 숫자를 세준다. 가장 높은 카운트의 노드들을 출력한다. 다른 분들의 풀이를 봤는데 풀이가 나랑똑같다. 하지만 어떻게 통과했는지... 💻소스 코드 import sys from collections import defaultdict from collections import deque def bfs(start): q = deque([start]) visited = [0] * (N ..

    [python] 백준 - 2644. 촌수계산

    [python] 백준 - 2644. 촌수계산

    문제 해결 1. 노드간의 최단거리를 구하는 그래프에 관한 기본적인 문제이다. 2. 먼저 주어진 부모자식들 간의 관계를 가지고 인접리스트를 만든다. 3. visit 배열을 만들어 방문 여부를 가지고 DFS 재귀함수를 진행한다. (1) 현재 노드에 인접한 노드를 for문을 통해 뽑아주고, (2) 만약 인접한 노드가 아직 방문하지 않은 상태라면, 그 노드로 이동 - 재귀 (3) 이동한 노드가 구해야하는 노드라면 방문한 노드들의 갯수를 세어주고 결론을 도출. -> 쉬운 문제라고 생각했는데 한참동안 '틀렸습니다'를 얻었다. 이번에도 역시 이웃님의 도움을 받았다. `촌수관계를 나타내지 못하면 -1을 출력해라`....... 문제를 잘 읽어보는 습관을 들여야겠다. 소스 코드 n = int(input()) a, b = ..

    [python] 백준 - 17142. 연구소 3 (삼성 SW 역량 테스트 기출 문제)

    [python] 백준 - 17142. 연구소 3 (삼성 SW 역량 테스트 기출 문제)

    문제 해결 1. 모든 바이러스의 위치와, 바이러스를 퍼뜨릴 구역의 수를 저장한다. 2. combinations 함수를 이용해 바이러스를 활성화시키는 경우의 수를 만든다. 3. 경우의 수를 하나하나씩 체크한다. (1) bfs를 이용해 바이러스를 모두 퍼뜨리며, 숫자를 1씩 증가시켜주고 마지막 숫자를 가져온다. (2) 바이러스를 다 퍼뜨렸는지 아닌지 검사를 해주고, (3) 최소값을 비교해준다 -> 여기서 주의 할 점은 바이러스를 다 퍼뜨렸음에도 불구하고 비활성화된 바이러스가 있다면 퍼뜨리기 위해서 시간을 소비하여 정답이 나오지 않을 수 있다. 그래서 처음에 바이러스를 퍼뜨릴 수 있는 구역의 수를 저장했고, bfs를 돌면서 바이러스를 퍼뜨린 수와 퍼뜨릴수 있는 구역의 수가 같아지게 되면 멈추어준다. 소스 코드..