본문 바로가기

브루트포스9

[Swift][프로그래머스][브루트포스] 괄호 변환 요구능력 재귀함수에 대한 이해 문제풀이 이 문제는 쪼개서 이해하면 이해가 잘되고 풀리게된다. 문제에서 주어진 절차를 무시할경우 삽질하게 되니 주의.. 1) 균형잡힌 괄호문자열 u와 v로 분류 균형잡힌 괄호문자열을 u와 v로 분류해준다. "("괄호의 개수는 leftCount, ")"괄호의 개수는 rightCount로 계산해주었다. leftCount와 rightCount가 같아지면 그건 균형잡힌 괄호문자열이 된다. func seperate(_ p: String) -> (String, String){ var leftCount = 0 var rightCount = 0 let pArr = Array(p) var u = "" var v = "" for i in 0.. String{ var result = "" if.. 2022. 5. 3.
[Swift][Bruteforce] 백준 6064번(카잉 달력) 요구능력 효율적인 브루트포스, 유클리드호제법 문제풀이 처음에는 무작정 돌리다가 시간초과가 났는데, 그 이유는 시간복잡도가 O(N * M)이 되서 최악의 경우에는 40000 * 40000번이 돌아갔기 때문이다.. 그럼 시간을 줄이는 방법은 뭐가 있을까? 이렇게 x와 y와 같이 두 개의 수를 사용해서 목표값을 맞추는 문제는 하나의 값을 고정하고 문제를 풀면 시간이 꽤 많이 단축된다. x값을 고정해서 문제를 풀어보자. curX, curY를 각각 목표값 x,y에 맞추기 위한 수 라고 생각해보자. 예제의 첫번째인 10, 12, 3, 9로 예를 들어보면, 그럼 curX는 3으로 고정이다. 우리는 curY값이 9가될 때 몇 번째 해인지 출력해주면 된다. 단순히 1씩 더해서 9가되는건 당연히 아니다. 처음에 curY값.. 2022. 4. 11.
[Swift][BruteForce] 백준 16198번 (에너지 모으기) 요구능력 : 백트래킹 코드설명 : 문제에서의 핵심 1. 구슬 하나를 고른다.(단, 첫번째구슬과 마지막구슬을 고르면 안됨) 2. x번째 에너지구슬 제거(고른 구슬을 제거해야한다.) 3. Wx-1 * Wx+1 의 에너지모음( Wx-1 * Wx+1의 모든경우를 합해야한다.) 4. N을 1감소시킴. 구슬 1~N까지 다시 번호매김. 예제 4 1 2 3 4 가있다. 2를 고르면 Wx-1 * Wx+1이 1 *3이 된다. 그리고 첫번째와 마지막은 못고르니까 3을 고른다. 3을 고르면 Wx-1 * Wx+1이 1 * 4가 된다. 그럼 에너지는 총 8이 모인다. 맨 처음에 3을 고른다. 그럼 Wx-1 * Wx+1이 2*4가 된다. 그 다음 2를 고르면 Wx-1 * Wx+1이 1 * 4가 되서 12가 나온다. 이렇게 어느 구.. 2022. 1. 14.
[Swift][BruteForce] 백준 16197번 (두 동전) 요구능력 : 백트래킹 코드설명 : 문제를 보면 동전이 한 칸씩 왔다갔다 해야된다. 그래서 백트래킹을 생각했고 백트래킹을 하기위해서는 동전의 위치좌표가 필요했다. 이 문제에서의 핵심 1. 두 동전의 위치 2. 위, 아래, 좌, 우 백트래킹 3. 동전은 하나만 떨어뜨려야된다. 4. 동전 떨어뜨릴 수 없거나 버튼을 10번보다 많이눌러야되면 -1출력.(개인적으로 이게제일 어려웠다.) 1. 두 동전의 위치 입력으로 o가 들어올때마다 coinLocation변수에 2차원 배열로 저장했다. 2. 위, 아래, 좌, 우 백트래킹 처음에는 하나씩하려다가 어차피 두 동전이 동시에 이동하니까 굳이 하나씩할 필요도없고 해봤자 안될거같아서 동시에 이동했다. 나는 떨어뜨리는걸 알기위해서 동전이 떨어지는 모서리지점에 x로 도배를 해놨.. 2022. 1. 13.