[Swift] 백준 1922 쿼드트리
·
📝 코테/BOJ
import Foundation /// 주어진 영상이 모두 0으로만 되어있으면 압축 결과는 "0" /// 모두 1로만 되어있으면 압축결과는 "1" /// 만약 0과 1이 섞여있으면 전체를 한번에 나타내지 못하고 /// 왼쪽 위, 오른쪽 위, 왼쪽 아래, 오른쪽 아래 이렇게 4개의 영상으로 나누어 압축하게된다. /// 이 4개의 영역을 압축한 결과를 차례대로 괄호 안에 묶어서 표현한다. /// 분할정복이란? 문제를 나눌 수 없을 때까지 나누어서 다시 합병하여 문제의 답을 얻는 알고리즘 /// 상위의 해답을 구하기 위해 아래로 내려가면서 하위의 해답을 구함 let N = Int(readLine()!)! var board = [[Int]]() for _ in 0.. Bool { for i in x..
[Swift] 백준 1780 종이의 개수
·
📝 코테/BOJ
오늘 하루종일 풀려고 도전했는데 실패해서 결국 구글링을 했다.. 이 문제에서 주어진 N의 최대값은 3^7 = 2187이다. 즉 N^2 = 4782969 1초에 2000만회 연산된다고 해서 2초 = 4천만회안에 풀면되니까 O(N^2)로 풀면 될 줄 알았는데 .. 계속 시간초과 오류가 발생했다. 구글링 중 파이썬으로 푼 코드들을 Swift언어로 바꿔 풀어봐도.. 파이썬에서는 풀리지만 Swift에서는 풀리지 않았다ㅠㅠ O(N^2logN), O(NlogN) 등등 다양한 시간복잡도로 구현해봤는데 모두 실패했었다. import Foundation let N = Int(readLine()!)! var matrix = [[Int]]() for _ in 0..
[Swift] (분할 정복) 퀵 정렬 구현해보기
·
💻 CS/알고리즘
이글은 비전공자 취준생이 개인적인 공부를 위해 작성한 글입니다. 자세한 내용은 https://babbab2.tistory.com/101 이곳에서 확인해주세요! 모든 이미지의 출처는 위의 티스토리임을 밝힙니다. 분할 정복 문제를 나눌 수 없을 때까지 나누어서 풀고, 나누어서 푼 문제를 다시 합병하여 답을 얻는 알고리즘 하양식 접근법으로 일반적으로 재귀함수로 구현합니다. 퀵 정렬 하나의 리스트를 pivot(기준점)을 기준으로 2개의 비균등한 크기로 분할하고 분할된 부분 리스트를 정렬한 다음, 2개의 정렬된 부분 리스트를 합하여 전체가 정렬된 리스트가 되게하는 방법입니다. 쉽게 생각하면 배열을 분할하고 정렬한 다음, 다시합치는 방법인 것 같습니다. 퀵정렬의 순서는 아래와 같습니다. 1. 기준점(pivot)을 ..
JerryiOS
Jerry