[프로그래머스] 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가 서로 겹쳐도 상관 없다! 물론, 겹쳐도 상관 없지만 터질 라이언 블록의 총..

[프로그래머스] 큰 수 만들기
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 다른 문제들 보다도 유난히 카카오에서 나온 문제들은 문제 길이가 엄청나게 길다. 상대적으로도, 절대적으로도... 그래서 문제 이해하는 데 에도시간이 소요되는 편인데, 이 문제를 풀기 위해 필요한 요건들을 정리하면 다음과 같다. 주어진 데이터베이스의 속성으로 가능한 모든 조합을 만든다. 이 조합들을 가지고 유일하게 튜플을 구분할..

[프로그래머스] 조이스틱 - 탐욕법(Greedy)
Algorithm 2021. 8. 27. 21:45

▼ 문제 링크 코딩테스트 연습 - 조이스틱 조이스틱으로 알파벳 이름을 완성하세요. 맨 처음엔 A로만 이루어져 있습니다. ex) 완성해야 하는 이름이 세 글자면 AAA, 네 글자면 AAAA 조이스틱을 각 방향으로 움직이면 아래와 같습니다. ▲ - 다 programmers.co.kr 그 옛날 오락실 게임기에서 랭킹에 올라갈 만큼(보통 10~20등 내외) 기록을 세우면 닉네임을 입력하라는 화면이 뜬다. A부터 Z까지, 보통 3자리, 종종 4자리 닉네임을 입력할 수 있곤 했다. 조이스틱을 위로 올리면 A -> B로, 반대로 아래로 내리면 B -> A로 이동한다. 좌우로 이동해서 닉네임 자리를 옮길 수 있다. 즉, 이 문제는 이 오락실 게임기로 주어진 닉네임을 입력할 때 움직여야 할 최소 횟수를 구하는 문제다. ..