본문 바로가기

구현12

[Swift][구현] 백준 15662 (톱니바퀴(2)) 요구능력 구현, 큐 문제풀이 변경되기 이전의 톱니바퀴끼리 비교를 해야하기 때문에 변경되기 이전의 톱니바퀴들을 미리 저장해둔다.(beforeLoc) 처음에 재귀로 접근했다가 이상하게 빠져버려서 시간을 많이 낭비했다가 포기하고 큐로 풀게되었다. 큐로 접근해서 방문처리를 해주면 똑같은 톱니바퀴를 돌지않고, 딱 돌아야하는 톱니바퀴만 돌 수 있다. 방문처리를 해주는 이유는 예를 들어 1번부터 출발해서 4번까지 가는데 중간에 2번에서 1번과 극이 다르다면 조건을 충족하기 때문에 1번을 또 돌릴 수도 있는 경우를 방지하기 위해서이다. 재귀로도 풀리긴 하지만, 큐로 푸는것이 효율적인 것 같다. 후기 변경되기 이전의 값을 쓰는 문제에서는 변경되기 이전의 값을 먼저 저장해놓자! 코드 import Foundation let.. 2022. 5. 18.
[Swift][구현] 백준 17406번 (배열 돌리기 4) 요구능력 구현 문제풀이 핵심은 순열을 이용해서 연산순서를 정해줘야한다는것이다. 배열돌리는 부분은 급하게 순열로 변경하다보니 코드가 더러워졌다.. 배열돌리는건 배열돌리기2와 동일하게 돌렸다. 시간나면 풀이올려야지.. 혹시 궁금한점있으시면 댓글달아주시면 답변드리겠습니다. 후기 어려운문제는 아니었는데 문제에서 헷갈리게 임의로 정해도된다(?)라고 적혀있어서 시간이 걸렸다.. 코드 let nmk = readLine()!.split(separator: " ").map{Int(String($0))!} let n = nmk[0] let m = nmk[1] let k = nmk[2] var arr = [[Int]]() for _ in 0.. 2022. 5. 17.
[Swift][구현] 백준 16967번 (배열 복원하기) 요구능력 구현 문제풀이 문제의 조건에 힌트를 모두 주었다. 두 배열중 하나에 포함된다는건 B는 필수적으로 A배열을 포함하고 있기 때문에 B만갖고있는것을 말한다. 가장 중요한건 빼기할때 절댓값이다.. for i in 0..= 0{ // aArr[i][j] = abs(aArr[i - x][j - y] - bArr[i][j]) } }else{//b에만 포함되면 aArr[i - x][j - y] = bArr[i][j] } } } 후기 절댓값때메 몇번을 다시했는지.. 코드 let hwxy = readLine()!.split(separator: " ").map{Int(String($0))!} let h = hwxy[0] let w = hwxy[1] let x = hwxy[2] let y = hwxy[3] var b.. 2022. 5. 14.
[Swift][구현] 백준 16931번 (겉넓이 구하기) 요구능력 구현, 수학 문제풀이 겉넓이만 구하면 되겠다고 생각하면 안된다. 울퉁불퉁(?)하기 때문에 옆에서 보는모습이 전부가 아니다. 이렇게 앞에서 봤을 때 빨간색으로 칠한부분이 옆에서는 안보인다. 이걸 어떻게 해결해야할까? 결론부터 말하자면, N*M의 겉을 0으로 둘러싸고 N*M을 4방향탐색해주면서 겉넓이를 구하면 된다. 이 배열이 저장되어있는 arr이라는 배열이 있다. 그럼, arr[1][1]부터 탐색을 시작하는거다. 빨간동그라미 부분의 4방향을 탐색해보자. 왼쪽 0, 위 0, 오른쪽 3, 아래 2이다. 인접한부분의 값이 자기자신보다 작으면 겉넓이를 더해준다. 직접 해보면 이해가 가겠지만 왼쪽 0이라서 1이더크니까 겉넓이가 1이 더해질것이다. 그럼 이 겉넓이는 왼쪽면에서 더해지는 겉넓이라고 생각하면 된.. 2022. 5. 13.