[프로그래머스] 2개 이하로 다른 비트
Algorithm 2022. 4. 10. 23:00

▼ 문제 링크 코딩테스트 연습 - 2개 이하로 다른 비트 programmers.co.kr 이 문제는 많은 시행 착오 끝에 내가 생각한 일반적인 방법(비트가 1개 혹은 2개가 다른 모든 경우의 수를 비교하는 방법)으로는 효율성 테스트를 통과할 수 없다는 것을 깨닫고 결국 집단 지성의 힘을 빌린 문제였다. 내가 처음 생각했던 방법으로는 정확성은 통과한 거 같은데 효율성에서 막히더라 🥲 아무튼 찾아본 바로는 풀이 방법이 다음과 같다. 주어진 숫자가 짝수일 때 짝수를 비트로 바꾸면 1 0 0 0 (= 8)처럼 맨 마지막 비트가 0이 된다. 이때, 비트가 1개 또는 2개가 다르면서 가장 작은 수 = 자연스럽게 마지막 비트 0을 1로 바꾼 수가 된다. 즉, 주어진 수에서 1만 더해주면 된다. 주어진 숫자가 홀수일 ..

[프로그래머스] 프렌즈4블록
Algorithm 2022. 4. 7. 18:00

▼ 문제 링크 코딩테스트 연습 - [1차] 프렌즈4블록 프렌즈4블록 블라인드 공채를 통과한 신입 사원 라이언은 신규 게임 개발 업무를 맡게 되었다. 이번에 출시할 게임 제목은 "프렌즈4블록". 같은 모양의 카카오프렌즈 블록이 2×2 형태로 4개가 붙 programmers.co.kr 우리가 흔히 하는 캔x크러쉬사, 프x즈팝 같은 게임을 구현하는 문제다. 그런데 이제 그 게임에서 블록을 터트릴 수 있는 방법 중, 단 하나, 2x2 블록만 터지도록 설계하면 된다. STEP1. 2x2 행렬을 살펴보면서 터트릴 블록 찾기 그림1처럼 2x2 총 4개의 블록이 모두 같은 블록인 경우를 찾아야 한다. 단, 이때 왼쪽의 라이언 블록처럼 2x2가 서로 겹쳐도 상관 없다! 물론, 겹쳐도 상관 없지만 터질 라이언 블록의 총..

[iOS] Xcode에서 Memory Leak을 확인하는 두 가지 방법 - 2) Instruments
iOS 2022. 3. 11. 23:20

Memory Leak이란? '메모리 누수'라고도 표현하며, 더이상 사용되지 않는 인스턴스가 메모리에서 해제되지 않고 남아있는 현상을 뜻한다. 이 메모리 누수를 해결하지 않으면 한정된 리소스를 효과적으로 활용하기 어려우니 메모리 누수가 일어나고 있지는 않은지 확인해서 반드시 해결해야 한다. 이번 글에서는 Memory Leak을 확인하는 두가지 방법을 소개하고자 한다. 바로 Xcode의 'Memory Graph Debugger'와 'Instruments'다. 그중에서도 이번에는 Instruments에 대해 알아보자. 사전 준비 이전 글에서 사용한 예제를 그대로 사용했다. 이전 글과 마찬가지로 첫번째 화면(First)에서 터치하면 두번째 화면(Second)로 진입하고, 진입하면서 동시에 서로를 강하게 참조하는..

[Swift] 스위프트의 문자열(String)에서 index로 문자에 직접 접근할 수 없는 이유
Swift 2022. 2. 22. 01:45

let str: String = "hello, world~!" print(str[0]) // 결과는? 위 코드를 실행하면 어떤 결과가 출력될까? "h"? 🙅‍♀️ 정답은 바로 컴파일 에러다. 아래와 같은 문구가 나타나면서 컴파일 에러가 발생한다. 'subscript(_:)' is unavailable: cannot subscript String with an Int, use a String.Index instead. → Int를 사용하여 문자열의 특정 위치에 접근할 수 없다. Int 대신 String.Index를 사용해라. 왜 스위프트에서는 여타 다른 많은 언어와 달리, Int를 사용하여 문자열의 위치에 직접 접근할 수 없을까? String도 결국 Character 배열로 이루어져있으면서? 이 문제를 이..

[iOS] Xcode에서 Memory Leak을 확인하는 두 가지 방법 - 1) Memory Graph Debugger
iOS 2022. 2. 10. 01:30

Memory Leak이란? '메모리 누수'라고도 표현하며, 더이상 사용되지 않는 인스턴스가 메모리에서 해제되지 않고 남아있는 현상을 뜻한다. 이 메모리 누수를 해결하지 않으면 한정된 리소스를 효과적으로 활용하기 어려우니 메모리 누수가 일어나고 있지는 않은지 확인해서 반드시 해결해야 한다. 이번 글에서는 Memory Leak을 확인하는 두가지 방법을 소개하고자 한다. 바로 Xcode의 'Memory Graph Debugger'와 'Instruments'다. 그중에서도 이번에는 Memory Graph Debugger에 대해 알아보자. 사전 준비 두가지 방법을 테스트하기 위한 것이므로 아주 간단하게 준비했다. 첫번째 흰 화면(First)에서 화면을 터치하면 바로 두번째 파란 화면(Second)로 넘어간다. 첫..

[프로그래머스] 큰 수 만들기
Algorithm 2022. 2. 7. 16:40

▼ 문제 링크 코딩테스트 연습 - 큰 수 만들기 programmers.co.kr 처음에는 문제를 읽고 다음과 같이 단순한 과정을 거쳐 풀이를 시도했다. 1) k개의 숫자를 제거한 모든 조합의 숫자 구하기 2) 1)에서 구한 숫자 중에서 가장 큰 수 구하기 그러나, 이렇게 했더니 1, 11, 12번 테스트케이스 말고는 전부 시간 초과로 실패했다. 😢 한참을 고민해 본 결과, 이건 내가 지금처럼 생각해서는 시간 초과를 해결할 수 없을 거라고 생각했고... 결국 구글링의 힘을 빌렸다. 😭 💡문제 해결 포인트 이 문제에서는 숫자의 순서가 뒤섞이지 않는다! 문제 내 설명에 이런 문장이 있다. "예를 들어, 숫자 1924에서 수 두 개를 제거하면 [19, 12, 14, 92, 94, 24] 를 만들 수 있습니다. ..

[프로그래머스] 괄호 회전하기
Algorithm 2022. 2. 4. 09:00

▼ 문제 링크 코딩테스트 연습 - 괄호 회전하기 programmers.co.kr 괄호를 회전한다는게 당최 무슨 말인지...? 했는데 알고보니까 회전... 이라기 보다는 한 칸씩 앞으로 민다는 말이 더 맞는 것 같다. 문제에서 주어진 예제를 살펴보자. 왼쪽으로 '회전'이란 말 대신, 왼쪽으로 '한 칸씩 이동'이라고 생각하면 쉽다. 아래 그림처럼 맨 앞의 괄호가 밀려서 맨 뒤로 이동하는 것이다. 이렇게 괄호를 이동시키는 과정을 괄호의 개수-1만큼 반복한다. 이 문제를 해결하기 위해 일단 첫번째로 주어진 괄호가 개폐가 옳은 괄호인지 아닌지 확인하고, 두번째로 이 괄호들은 한 칸씩 이동해 새로운 괄호열을 만든다. 그리고 그 괄호열을 다시 첫번째 과정인 옳은 괄호인지 확인하는 절차를 밟으면 된다. 1단계: 옳은 ..

[프로그래머스] 후보키
Algorithm 2022. 2. 3. 00:05

▼ 문제 링크 코딩테스트 연습 - 후보키 [["100","ryan","music","2"],["200","apeach","math","2"],["300","tube","computer","3"],["400","con","computer","4"],["500","muzi","music","3"],["600","apeach","music","2"]] 2 programmers.co.kr 다른 문제들 보다도 유난히 카카오에서 나온 문제들은 문제 길이가 엄청나게 길다. 상대적으로도, 절대적으로도... 그래서 문제 이해하는 데 에도시간이 소요되는 편인데, 이 문제를 풀기 위해 필요한 요건들을 정리하면 다음과 같다. 주어진 데이터베이스의 속성으로 가능한 모든 조합을 만든다. 이 조합들을 가지고 유일하게 튜플을 구분할..