728x90

스택 5

백준 2606번 바이러스 문제 풀이/해설/코드 (파이썬) 사이클을 확인하는 문제.

코드만 궁금한 분은 깃허브링크 GitHub - Rhyankwon/algorithms Contribute to Rhyankwon/algorithms development by creating an account on GitHub. github.com 문제 해결 논리 1. 1번 컴퓨터를 방문 표시 후 2. 1번 컴퓨터에 연결된 다른 컴퓨터 모두 스택에 넣기. 3. 스택에 들어가있는 컴퓨터 하나씩 꺼내서 아직 방문 표시가 안돼있으면 다시 스택에 넣기 반복 4. 스택에 남은 값이 더이상 없는 경우 방문표시돼있는 컴퓨터의 갯수 - 1 (1번 컴퓨터는 제외)값을 출력한다. 기본적인 그래프문제.

백준 1743번 음식물 피하기 풀이/코드 (파이썬) 기본 스택 문제

코드만 궁금한 분은 깃허브링크 문제 설명은 스킵하겠습니다. 문제 해결 논리 1. 주어진 크기만큼 (N, M)의 격자를 만들고 해당 리스트는 모두 0으로 초기화해둔다. 2. 쓰레기가 있다고 입력되어지는 행/열의 격자 부분을 1로 바꾼다. 3. 격자의 각 요소가 1인지 확인 후 만일 1이면 인접 요소중에 1이 있나 확인하고 0으로 바꾼다. 4. 인접 요소중에 더이상 1이 없으면 그때까지 1이였던 요소의 갯수를 저장한다. 5. 저장한 쓰레기 갯수 리스트에서 가장 큰 값을 출력한다. 사실 거의 비슷한 스택문제를 오늘 벌써 두개나 풀어서 이 문제를 풀까말까 고민을 많이 했다. 근데 그냥 이전 코드 살짝 바꾸고 살짝 추가하면 될것같아서 풀었다.

백준 2178번 미로 탐색 풀이/코드 (파이썬) 우선순위큐/힙/스택 활용문제

코드만 궁금한 분은 깃허브링크 문제 설명은 스킵하겠습니다..! 문제 해결 논리 1. 스택에 [1, 0, 0] 넣은 후 1 -> 0 으로 표지(재방문 막기위해서). 이 때 [0, 0]은 시작점이고 1은 지금까지 지나온 노드의 갯수를 세기 위해서 저장한다. 2. 인접 요소 중 1로 표지돼있는 요소의 행/열값과 지금까지 지나온 노드의 수(이번의 경우에는 2)를 스택에 넣고 해당 요소를 1 -> 0으로 변경한다. 3. 스택을 힙으로 활용해, 지금까지 방문했던 수가 가장 작은 값을 스택에서 꺼내서 1~2번을 다시 반복한다. 가령 지금 [4,2,1]이라면, 0,0에서 2,1까지 오는데 총 4개의 요소 (예를 들자면 [0, 0], [1,0], [2,0], [2,1])를 지났다는 뜻이다. 이 문제를 우선순위 큐를 사용..

백준 1303번 전쟁 풀이/코드 (파이썬) 기본 스택 활용문제

코드만 궁금한 분은 깃허브링크 문제 설명은 스킵하겠습니다. 문제 해결 논리 1. 반복문으로 처음부터 끝 요소까지 W인지 B인지 확인 하는데, 2. 이 때 인접한 요소가 앞서 확인한 요소 (W 혹은 B)와 동일한지 확인 후 3. 만일 같으면 계속 인접 요소중에 같은 알파벳이 있는지 확인하면서 갯수 확인. 4. 값을 계산해야하니까 W리스트, B리스트를 만들어서 W인경우 B인경우의 갯수^2를 각각 저장해둔다. 5. 각 리스트의 합을 출력하면 끝

백준 2667번 단지번호붙이기 문제 해설/풀이/코드 (파이썬) 기본 스택 문제

코드만 궁금한 분은 깃허브링크 제목에 쓴것처럼 기초 스택문제이다. 주어진 이중리스트는(이하 격자) 1과 0으로 구성돼있다. 해당 격자에서 1끼리 서로 인접해있는 경우 그걸 한 덩이로 봤을때 총 몇 덩이가 있고 각각 몇개의 격자로 구성돼있는지를 알아내야하는 문제이다. 문제 풀기 1. 이중 for문으로 모든 요소에 대해서 1인지 확인. 2. 만약 1인 요소 찾으면 스택에 넣고 근처에 인접한 요소중에 1이 있는지 확인하기 2. 이 때 이미 1을 찾은 부분은 0으로 표시하고 1->0으로 바꾼 갯수를 센다. 4. 근처 인접한 요소에 더이상 1이없으면 갯수 저장하고 1번부터 반복. 기본중의 기본중의 기본 스택문제이다. 이거 못풀면 아무 스택문제도 못푼다고 보면된다. 다시 말하면 스택 기본 연습하기에 좋은 문제.

728x90