분류 전체보기
-
백준 6603 로또Algorithm/BOJ 2020. 7. 15. 12:26
출처: www.acmicpc.net/problem/6603 분류: 완전 탐색 접근방식 주어진 문제에서 로또번호 6개를 골라서 출력하는 문제입니다. 전형적인 순열문제였습니다. 제 순열 관련 글도 있습니다 :) 위 글에서 사용한 스왑방식 대신 select 를 체크할 배열을 만들어서 인덱스만 넘겨주는 방식으로 풀었습니다. 스왑해서 재귀호출하고 다시 스왑을 한 번 더 해서 원상태로 바꿔주듯이 인덱스를 선택해서 true로 바꿔주고 호출한 다음에 다시 false로 바꾸고 호출해주는 과정이 필요합니다 ! 해결방법 func select(index: Int, count: Int) { //print("index: \(index), count: \(count)") if count == lottoNumberCount { fo..
-
백준 15686 치킨 배달Algorithm/BOJ 2020. 7. 13. 18:42
출처: www.acmicpc.net/problem/15686 분류: 완전탐색 접근방식 집과 치킨집이 주어지고 집에서 제일 가까운 치킨집까지의 거리가 집의 치킨거리가 됩니다. 모든 집의 치킨 거리를 합친 값이 도시의 치킨거리가 됩니다. 치킨집을 M개 만큼 선택했을 때 최소가 되는 치킨거리를 구하는 문제입니다. 우선 집과 치킨집의 위치를 먼저 저장해두고 치킨집을 M개 골랐을 때의 치킨 거리들을 구하면 됩니다. 해결방법 let nm = readLine()!.split(separator: " ").map{Int($0)!} var board = [[Int]]() for _ in 0..
-
CG, Core GraphicsiOS 2020. 7. 12. 01:11
안녕하세요. iOS에서 뷰를 다룰 때 자주 등장하는 CGFloat, CGRect, CGPoint 등등... CG 패밀리들을 많아 보셨을텐데요, 이때 CG는 Core Graphics 의 약자입니다. 오늘은 이녀석이 뭔지 초심자의 입장에서 아주 가볍게 알아보겠습니다. Core Graphics ? Core Graphics 코어 그래픽스(이하 CG)는 2D 렌더링, 즉 2차원에서 그리는 작업 위해 사용되는 개념입니다. 공식문서를 보면 Quartz 기술을 사용해서 가볍고 정확하게 그릴 수 있다고 나오는데요, 보면 드로잉, 그라데이션, 색상, PDF 등등 다양하고도 폭넓게 사용된다고 해요! 깊게 알면 좋겠으나 다음 기회로 넘기고 CG는 2차원을 위해 사용되는 개념이구나, iOS에서 CG가 붙은 애들은 2차원 좌표계..
-
Programmers Lv3) 방문 길이Algorithm/Programmers 2020. 7. 10. 13:54
출처: programmers.co.kr/learn/courses/30/lessons/49994 분류: Lv3 접근방식 -5 ~ 5 까지의 정사각형에서 U, D, R, L 중 하나로 이동 방향들이 주어질 때, 처음 이동한 길의 개수를 세는 문제입니다. 저는 처음에 Set 로 이루어진 11x11 맵을 만들고 각 칸에 이동한 위치를 넣는 엄청나게 무식한 방법을 사용했는데, 단순히 새로운 길의 개수만 알면 되기 때문에 이럴 필요 없이 그냥 좌표만 가지고도 해결할 수 있는 문제입니다. 갈 수 있는 길이라면 그 길을 그냥 Set 에 String 으로 때려박으면 매우 간단해집니다. 주의할 점은 (0, 0) -> (0, 1) 로 이동했다면 반대로 오는 (0, 1) -> (0, 0) 도 같은 길로 체크해야 합니다. 해결..
-
BOJ 14889 스타트와 링크Algorithm/BOJ 2020. 7. 8. 16:17
출처: www.acmicpc.net/problem/14889 분류: 완전탐색 접근방식 짝수의 사람과 두 사람이 같은 팀일 때 능력치가 주어지고, 사람들을 두 팀으로 나눌 때, 능력치의 차이를 구하는 문제입니다. 핵심 포인트는 크게 두 가지로 볼 수 있습니다. 1. 사람들을 두 팀으로 나누기 2. 각 팀의 능력치를 구하기 주의할 점은 각 팀의 능력치를 구할 때 팀원 두 쌍의 능력치를 각각 모두 더해줘야 합니다. 만약 1, 3, 6이 한 팀이고 두 사람이 팀일 때 능력치를 Sij 라고 한다면, S13 + S16 S31 + S36 S61 + S63 위 6가지 경우를 모두 더해줘야 합니다. 해결방법 팀을 나누는 건 3명을 뽑으면 나머지 팀은 자동으로 완성되므로 3명을 뽑을 때까지 재귀로 구현했습니다. func ..
-
~= 연산자 in SwiftSwift 2020. 7. 7. 16:52
오늘은 ~= 연산자에 대해서 알아보겠습니다. ~= 연산자 ~= 연산자는 대상이 특정 범위에 속하는지 범위를 체크하는 연산자 입니다. 저희가 많이 사용하는 switch 구문에 바로 이 ~= 연산자가 사용됩니다. case 의 범위를 확인할 때 내부적으로 ~= 연산자가 불려서 사용되고 있는 것이죠. ~= 연산자는 비교 연산자 == 의 변형? 확장된 상태로 생각할 수 있겠습니다. 두 대상이 같은지 단순 비교할 때 == 연산자와 달리 대상이 어떤 범위에 속하는지 확인합니다. 숫자 5가 0~ 10 사이일 때 10을 곱해주려면 이렇게 할 수 있습니다. var n = 5 if 0.. Bool { if "a"..."z" ~= str { // str contain lowercased alpabet return true }..
-
백준 1041 주사위Algorithm/BOJ 2020. 6. 30. 15:37
출처: www.acmicpc.net/problem/1041 분류: Greedy 접근방식 주사위를 쌓아서 정육면체를 만들 때 각 주사위에서 서로 마주보는 면이 동시에 보일 수는 없습니다. 따라서 마주보는 면이 안 나오게 잘 계산해서 최소값을 구해줘야 합니다. 주어진 도면에서 각 주사위의 마주보는 면은 (0, 5), (1, 4), (2, 3) 입니다. (주사위 1개인 경우 제외) 만들어진 정육면체에서 각 주사위는 3가지 케이스 밖에 생기지 않고 각 케이스의 개수는 아래와 같습니다. 세 면이 보이는 경우 4개 ( 각 모서리 위쪽 ) 두 면이 보이는 경우 4(N-1) + 4(N-2) (옆면 모서리 + 위쪽 모서리) 한 면이 보이는 경우 4N(N-2) + (N-2)(N-2) (테두리를 제외한 옆면 + 테두리를 제..
-
Hashable in Swift 5Swift 2020. 6. 25. 19:48
요즘 CS193p 강의를 다시 보고 있는데 이런 내용이 있었나 와 정말 이렇게 알찬 강의였나 라는 생각이 계속 드네요 너무도 배울게 많고 부족했던게 많았구나를 알려주는 강의인 것 같습니다. protocol 쪽을 보다가 Hashable에 대해 잠깐 짚어보고 넘어가려고 합니다 :) 새로운 구조체나 클래스를 정의해서 객체를 만들었는데, 얘네들을 비교하고 싶다? 그럴 때 Hashable protocol 을 사용합니다. 그럼 Hashable protocol은 뭘까요? Hashable protocol Hashable 을 뭐라고 설명하는지 먼저 살펴볼까요? integer hash value를 생성하는 Hasher로 hash 될 수 있는 타입. 한 마디로 Hashable protocol을 상속 받는다는 건 hash 될..