본문 바로가기

엑사남171

[VBA_재귀함수] 문제적 남자 문제 풀이 이 문제를 풀기 위해서는 제한적인 방법들을 두면서 문제를 푸는것이 맞을 것이다. 가령 왼쪽과 우측에 모두 맨앞의 숫자는 1이 들어올 수 없다. 또는 나누는 수들은 각 수들의 약수여야 한다. 뭐 이런식의 조건을 주면서 풀어야 한다. 처음엔 이 문제의 답이 단 하나만 있는 줄 알고 문제의 답을 찾기 위해 조여갔다. 어 근데 한개가 아니다. 오기가 생겼다. 얼마나 있을까.. 이걸 모두 찾으려면 1부터 9까지 모든 조합수를 구해서 조합된 수들을 왼쪽합과 오른쪽합을 비교하면서 조건에 해당되는 숫자들만 도출하면 된다는 생각에 이르렀다. 자 그럼 모든 조합의 경우의 수는 어떻게 구할까? https://1stminokingdom.tistory.com/20 [VBA_재귀함수] 모든 경우의 수 순열구하기 VBA를 배우는 .. 2021. 8. 22.
[VBA_Multi For each] 행과 열을 반복하여 X묶음을 찾아라 오늘은 다중 For each를 해보려고 한다. 보통 다중 For문을 많이 사용하고 다중 For each는 많이 사용하지 않지만 본인들의 코드가 조금더 업그레이드 되려면 For each를 잘 다루어야 한다. 다중 For 문을 사용하는 이유는 막상 For each문을 쓰려면 영역안의 행과 열의 위치를 찾아내기가 힘들어 하기 때문이다. 문제는 이렇다. 각 X들의 묶음을 하나로 해서 계산을 하여 AA열에 그 값을 출력하는게 문제이다. 해법으로는 묶음들을 보면 공백xxx공백 이런식으로 되어 있기에 이 값을 찾기 위해서는 자신의 위치는 공백인데 그 다음 열이 값이 X인 값들을 찾으면 된다. 여기서 유의할 점이 있다. 바로 각 행의 1번째 값이 X가 있는 상황이다. 다시 말하면 해법으로 제시한 경우는 자기 자신은 공.. 2021. 8. 18.
[VBA_ArrayList] ArrayList를 통한 중복값 제거 후 정렬하기 내가 공부해 본 바로는 배열안에서 Arraylist만큼 편하게 정렬을 도와주는 것은 없는거 같다. 보통 정렬이라고 하면 일명 버블정렬이라고 하여 근접한 두개를 서로 비교하며 정렬하는게 표준으로 사용한다. 오늘 소개할 ArrayList의 매소드는 이러하다. 여기서 보통 Add,Clear,Contains,toArray,Sort 등이 많이 사용되는데 Add,Sort만 사용해도 충분히 활용이 높다. ArrayList를 소개하기 위해 준비한 예제는 다음과 같다. List에는 정렬해야 하는 대상들이 있으며, 각 리스트별로 중복된 값들이 있는데 이를 제거하고 정렬하는 코드를 작성할때 [ Contains ] 매소드로 기존에 이미 Add된 값들을 판별하여 중복값을 제외할 수 있으므로 실무에 유용하게 사용하기 바란다. A.. 2021. 8. 18.
[VBA_재귀함수] 모든 경우의 수 순열구하기 VBA를 배우는 것중 또 하나는 알고리즘을 하나둘씩 배워가는 즐거움이 있다. 최근에 가장 좋아하는 알고리즘으로는 재귀문인데 문제를 접할 때마다 풀기 싫지만 풀면 뿌듯한 뭐 이런 이상한 기분을 주는 녀석이다. 이걸 풀기 위해서 알고리즘 관련한 사이트와 블로그를 열심히 찾아본 결과 드디어 이해를 하였기에 코드를 올린다. 재귀함수는 호출을 하기전으로 돌아오기 때문에 종료구문을 넣어주지 않으면 무한 루프에 빠질 수가 있다. 본 알고리즘은 공백과 문자가 있는 두개의 영역에서 처음 문자가 있는 영역에서 문자가 없는 영역으로 자리를 바꿔준 다음 더이상 바꿔줄 문자가 없으면 다시 처음으로 돌아와서 문자가 없는 영역과 문자가 있는 영역으로 회기해서 위치를 바꿔주는 것이 관건이다. 이건 말로 풀기에는 한계가 있고 [F8].. 2021. 8. 17.