카카오 블라인드
-
Programmers Lv3) [2019 카카오블라인드] 길 찾기 게임Algorithm/Programmers 2021. 4. 21. 16:50
출처: programmers.co.kr/learn/courses/30/lessons/42892 분류: Tree 접근방식 주어진 노드 정보를 가지고 이진트리를 구성한 후 전위순회, 후위순회 결과를 반환하면 되는 문제였습니다. 노드 정보는 [Int]로 x, y 값이 주어지는데, 같은 레벨의 노드는 모두 y값이 같고, y값이 클수록 상위 레벨의 노드입니다. 따라서 y값을 기준으로 sort해주고 차례대로 이진트리를 구성해주면 됩니다. 저는 순회할 때 인덱스를 반환해야 하므로, 노드에 index 값을 가지고 있도록 했습니다. x,y 정보도 그냥 배열 그대로 들고있도록 해줬어요. class Tree { var value: [Int] var index: Int var leftChild: Tree? var rightC..
-
Programmers Lv2) [2021 카카오블라인드] 메뉴 리뉴얼Algorithm/Programmers 2021. 2. 27. 14:04
출처: programmers.co.kr/learn/courses/30/lessons/72411 분류: 조합 접근방식 카카오 블라인드 2번 문제였습니다! 주어진 코스의 개수에 해당하는 조합을 모두 찾고 그 중에서 가장 많은 사람이 먹었던 메뉴들을 골라주면 됩니다. 여러 개라면 모두 넣어줍니다. 주어진 입력 범위가 그리 크지 않기 때문에 ( 20(orders) x 10(각 order의 최대 길이 ) x 10(course) x 10(각 course의 최대 길이) = 20000 정도?) 그냥 다 돌면서 조합을 찾아주고 필터해주면 됩니다. 조합을 찾는 방식은 어렵지않게 찾아볼 수 있습니다 :) 저는 각 코스 문자열의 인덱스를 돌면서 해당 인덱스를 추가해서 재귀, 추가하지 않고 재귀를 돌려서 만들었습니다. func..
-
Programmers Lv2) 파일명 정렬Algorithm/Programmers 2020. 8. 28. 15:42
출처: programmers.co.kr/learn/courses/30/lessons/17686 분류: Lv2, 카카오 블라인드 2018 3차 접근방식 주어진 조건으로 파일을 정렬하는 문제입니다. 문제에서 head, number, tail 3부분으로 나눠서 정렬하라고 하고 있는데요, 하라는 대로 분류해서 head, number, tail 을 프로퍼티로 갖는 File 이라는 struct를 만들고 정렬했습니다. 저는 File을 만들 때 Init 에서 바로 분류 해줬는데요, 분류할 때는 정규표현식을 쓸 수도 있을 것 같은데 중간에 숫자있는 부분만 number로 만들어주면 되어서 current 변수를 하나 두고 처음부터 읽어가면서 분류해줬습니다. mutating func parseFile(_ file: Strin..
-
Programmers Lv2) 후보키Algorithm/Programmers 2020. 8. 25. 17:06
출처: programmers.co.kr/learn/courses/30/lessons/42890 분류: 카카오 블라인드 2019 접근방식 유일성과 최소성을 만족하는 후보키를 찾는 문제입니다. 각 row를 유일하게 식별할 수 있다면 유일성을 만족합니다. 이미 후보키가 포함되어 있다면 최소성을 만족하지 못합니다. 유일성 확인 ["a","1","4"] ["2","1","5"] ["a","2","4"] 테이블이 다음과 같이 주어졌고 각 column을 0, 1, 2 라고 할 때, [0], [1], [2], [1,3] 는 모두 중복을 포함하고 있으므로 유일성을 만족하지 못해 후보키가 될 수 없고, [0, 1], [1, 2] 는 후보키가 될 수 있습니다. [1, 2, 3]은 이미 [1, 2]가 포함되어 있으므로 최소성..
-
Programmers) Lv3 [2020카카오공채] 기둥과 보 설치Algorithm/Programmers 2020. 4. 14. 14:28
출처: https://programmers.co.kr/learn/courses/30/lessons/60061 분류: Lv3 접근방식 문제에 제시된 조건대로 잘 구현할 수 있는지 구현 능력을 파악하는 문제입니다. 특별한 기술이나 이론이 필요한 문제는 아닙니다. 조건에 맞게 잘 구현하면 됩니다... 잘 잘.. 잘.... 네... 정답률 1.9% ... 👀 문제의 핵심은 기둥과 보를 설치하고 삭제할 때 조건을 명확하게 이해하고 구현할 수 있느냐에 있습니다. 생각보다 여러가지 상황이 있기 때문에 각 케이스 별로 잘 분류해서 명확하게 풀어야겠어요. 저는 설치 / 삭제 기둥 / 보 상황별 이런식으로 쪼개서 케이스를 최대한 나눠서 풀어보았습니다. 해결방법 먼저 설치부터 확인해보죠. 설치는 기둥 설치, 보 설치 상황이..
-
Programmers) Lv3 [2020카카오공채] 자물쇠와 열쇠Algorithm/Programmers 2020. 4. 3. 21:13
출처: https://programmers.co.kr/learn/courses/30/lessons/60059#qna 분류: Lv3, 2020 카카오 공채 접근방식 배열의 크기가 3~20 으로 범위가 크지 않기 때문에 각각의 케이스를 맞춰가면서 됩니다. 핵심 포인트는 3가지 입니다. 1. lock 과 key 를 맞춰서 열 수 있는지 확인할 수 있어야 합니다. 2. 주어진 범위 안에서 key를 이동시킬 수 있어야 합니다. 3. key 를 회전시킬 수 있어야 합니다. 주의할 점은 범위를 설정할 때, key의 끝 부분이 lock의 시작 점에 오는 점부터 key의 시작 부분이 lock의 끝 점에 오는 점까지 를 확인해야 합니다. 문제의 예처럼 key와 lock이 둘 다 (3,3) 인 배열이라면, key의 끝 부분..
-
Programmers) Lv2 [2020카카오공채] 문자열 압축Algorithm/Programmers 2020. 3. 16. 15:24
출처: https://programmers.co.kr/learn/courses/30/lessons/60057 분류: Lv2 문자열 접근방식 문자열의 길이 N의 절반 이상으로 자르면 압축할 수가 없습니다. 주의 할 개념은 이정도 나머지는 구현이 핵심입니다. 카카오 테스트 해설의 출제의도는 다음과 같습니다. 문자열을 다룰 수 있고, 아래 예시와 같이 문자열과 관련된 다양한 작업을 할 수 있는지 파악 문자열 자르기 부분 문자열 얻기 문자열 비교하기 문자열 길이 얻기 Swift 는 문자열 다루기가 상대적으로 까다로운데 자유자재로 사용하려면 역시 많은 연습이 필요하겠습니다 😥 해결방법 1 ~ N/2 까지 잘라가며 압축 문자열의 길이가 가장 작은 값을 찾아냅니다. 앞에서부터 압축 문자열의 길이로 잘라내면서 중복을 ..