Be Where You Want to Be

[스터디] 알고리즘 7

[Python] 백준 알고리즘 2583번: 영역 구하기

이번에 푸는 문제는 백준 알고리즘 2583번: 영역 구하기로 난이도는 Siver 1 에 해당한다. 문제는 다음과 같다. 이문제도 이전 4693번과 마찬가지로 2667번 단지번호 붙이기와 유사하다. 단지번호 붙이기 문제에서는 그래프 G를 0과 1로 표현하여 인접해있는 사각형을 제시한다. 이번문제에서는 사각형을 제시하는 방법이 달랐을 뿐, 풀이방법은 2667번과 거의 똑같다. # 작성자 : SH_WON_96 # # 2021-01-07 # # 알고리즘 - Graph # # 문제번호 : 2583 영역 구하기 # # # 초기 입력값 받기 import sys from collections import deque input = sys.stdin.readline queue = deque() input = sys.std..

[Python] 백준 알고리즘 4693번: 섬의 개수

이번에 푸는 문제는 백준 알고리즘 4693번: 섬의 개수로 난이도는 Siver 2 에 해당한다. 문제는 다음과 같다. 사실 이 문제는 2667번 단지번호 붙이기를 풀고 풀어서 수월하게 풀었다. 기존 단지번호 붙이기 문제에서 G[x][y] 기준으로 주변 테두리를 확인하는 것만으로 바꾸면 끝난다. x,y를 탐색의 기준으로잡고 dx,dy를 만들어서 주변을 탐색하게 만들었다. (다이얼 5를 기준으로 1~9를 탐색한 것과 같은 구조로 만들어놨다) # 작성자 : SH_WON_96 # 2021-01-04 # 알고리즘 - Graph # 문제번호 : 4963 # 초기 입력값 받기 import sys from collections import deque input = sys.stdin.readline dx, dy = [-..

[Python] 백준 알고리즘 2178번: 미로 탐색

이번에 푸는 문제는 백준 알고리즘 2178번: 미로 탐색으로 난이도는 Siver 1 에 해당한다. 문제는 다음과 같다. 본 문제는 알고리즘 분류 BFS에서 두번째에 노출되어있는 문제이고, BFS에서 사용했던 visited에 거쳐온 노드 숫자를 업데이트하는 과정만 넣어주면 된다. # 작성자 : SH_WON_96 # 2020-09-15 # 2021-01-04 review # 알고리즘 - Graph # 문제번호 : 1278 # 초기 입력값 받기 import sys input = sys.stdin.readline N,M = map(int, input().split(" ")) G = [[0 for i in range(M)] for j in range(N)] for i in range(N): x = list(inp..

[Python] 백준 알고리즘 1260번: DFS와 BFS

이번에 푸는 문제는 백준 알고리즘 1260번: DFS와 BFS로 난이도는 Siver 2 에 해당한다. 문제는 다음과 같다. 이문제는 기본적인 BFS/DFS 개념을 코드로 구현한 문제로, 예제 입력과 출력만 잘 맞추어서 넣어주면 된다. DFS의 경우, Depth를 타고 들어가면서 탐색하므로 재귀를 쓰게되고, BFS의 경우, 같은 Depth끼리 보면서 탐색하므로 queue를 활용하게된다. 나동빈님 블로그에서 자세한 개념을 볼 수 있다.(책으로 이전에 공부했었고, 다시 복습하면서 참고했음) 15. 너비 우선 탐색(BFS) 너비 우선 탐색(Breadth First Search, BFS)은 탐색을 할 때 너비를 우선으로 하여 탐색을 수행하는 ... blog.naver.com # 작성자 : SH_WON_96 # 2..

[Python] 백준 알고리즘 1463번: 1로 만들기, DP문제

이번에 푸는 문제는 백준 알고리즘 1463번 : 1로 만들기로 난이도는 Siver 3 에 해당한다. 문제는 다음과 같다. 이문제는 N이 주어졌을때 3가지 연산을 최소한으로 써서 1을 만드는게 목적이다. 10을 예로들면 10 -> 9 -> 3 -> 1 이렇게하면 3번의 연산을 하면 된다. 이문제도 메모이제이션이 필수이다. 그리고 어디로 연산을하는 것이 최소의 연산횟수인지를 추적하면 된다. 12을 예로 들면 1) 12 - 1 = 11 2) 12 / 3 = 4 3) 12 / 2 = 6 와 같이 3가지의 연산을 할 수 있다. 그렇다면 우리가 11, 4, 6 이 몇번의 연산을 필요로하는지 안다면 그중 가장 연산횟수에 +1이 12의 최소 연산횟수 일 것이다. 이것을 메모이제이션하면서 1부터 올라가면 아래 코드와 같..

[Python] 백준 알고리즘 1003번 : 피보나치 함수, DP문제

이번에 푸는 문제는 백준 알고리즘 1003번 : 피보나치 함수로 난이도는 Siver 3 에 해당한다. (solve.ac 기준) 문제는 다음과 같다. 피보나치 함수는 fibonacci(0) = 1*fibonacci(0) + 0*fibonacci(1) = > 0과 1의 총 호출 횟수 = 1 fibonacci(1) = 0*fibonacci(0) + 1*fibonacci(1) = > 0과 1의 총 호출 횟수 = 1 로 시작하며, 그 뒤는 호출이 반복이 되는 재귀함수이다. fibonacci(2) = (1+0)*fibonacci(0) + (0+1)*fibonacci(1) = > 0과 1의 총 호출 횟수 = 2 fibonacci(3) = fibonacci(1) + fibonacci(2) = 0*fibonacci(0)..

[Python] 백준 알고리즘 스터디 재시작

작년 하반기에 알고리즘을 공부하면서 틈틈히 네이버 블로그에다가 설명글을 쓰곤 하였다. 하지만 바빠진 취준과 졸업작품 , 논문 등의 핑계로 결국 10개정도 올리다가 멈춰버렸다. (그리고 기억속에 풀이방식도 안남았다고 한다) 새로운 마음으로, 다시 취업준비를 하는 마음으로 티스토리에 알고리즘 문제푼 것에 대한 생각,풀이를 올려보려고 한다. 잊었던 이론을 복기할 겸 풀었던 문제들을 다시 리뷰하고 시작할 예정! 부디 2021 상반기에는 취뽀할 수 있는 쏘가 되길 바라며... -간단했쏘 시작-