바위타는 두루미
문제 이미지 편집 프로그램에서 흔히 쓰이는 '영역 칠하기'함수를 구현하여라 영역 칠하기 함수는 화면(색이 칠해진 이차원 배열)과 그 화면상의 한 지점, 그리고 새로운 색상이 주어졌을때, 그 주어진 지점과 색이 같은 인접한 주변 영역을 새로운 색상으로 색칠하여라 해결법 DFS나 BFS같은 탐색법으로 해결할 수 있다. 재귀를 사용하는 단원이니 재귀를 사용해서 풀기 위해 DFS로 해결해 보겟다. import enum class Color(enum.Enum) : Black = 0 White = 1 Red = 2 Yellow= 3 Green = 4 def ChangeColor(map, point, oldColor, newColor): if point[0]=len(map) or point[1]= len(map[0]..
문제 n-쌍의 괄호로 만들 수 있는 모든 합당한(괄호가 열리고 닫힌) 조합을 출력하는 알고리즘을 구현하여라 입력 :3 출력 : ((())), (()()), (())(),()(()),()()() 접근법 첫번째는 f(n-1)의 결과로 f(n)을 만드는 재귀적인 방법을 통해 결과쌍을 찾을 수 있을 것이다. n = 2인경우 (()), ()() 두가지가 있다. n = 3인경우 (()()) ((())) (()(()) (())() ()()() 5가지가 있다. 그러면 (())=> (()()) - 첫번째 괄호 다음에 새로운 괄호 넣기 ((())) - 두번째 괄호 다음에 새로운 괄호 넣기 ()(()) - 가장 시작점에 넣는다. ()() => (())() - 첫번째 괄호 다음에 새로운 괄호 넣기 ()(()) - 두번째 괄호..
문제 문자열이 주어졌을 때 모든 경우의 순열을 계산하는 메서드를 작성하라. 문자는 중복되어 나타날 수 있지만, 나열된 순열은 서로 중복 되면 안된다. 접근법 가장 간단한 방법은 현재 순열이 이미 만들어 졌는지를 확인하고 만들어진 적이 없다면 리스트에 더해주는 것이다. 해시테이블을 사용하면 되지만, 최악의 경우에 n!의 시간이 걸린다. 따라서 모든 순열을 만들어서 중복된 경우를 제거하는 것 보다는 중복되지 않은 순열만을 나열하는 것이 더 효율적일 것이다. 문자열 aabbcccc가 있다고 할때 a->2 b->2 c->4 개가 존재한다. 그럴때 해시테이블을 이용하여 문자열 순열을 나열하는 방법을 생각해보자. P (a ->2, b->2, c->4) ={a + P (a ->2, b->2, c->4) } + {b ..