비트를 쪼개는 개발자

allen321@naver.com

코딩테스트 24

C# [프로그래머스] 멀리 뛰기

문제 설명 효진이는 한 번에 1칸 혹은 2칸을 점프 할 수 있음n개의 칸이 주어졌고, 마지막 칸에 도달할 때 발생하는 경우의 수를 따져야 함결과로 나온 값에 1234567로 나눈 나머지 값을 return하는 함수를 완성해야 함 문제의 요지 자체는 간단하지만 오버플로우와 경우의 수가 많아지기 쉬운 케이스라고 생각했다. 문제를 풀다보니 칸 수가 증가하면서 늘어나는 값이 피보나치 수열과 거의 흡사하다는 것을 발견했고 이와 비슷하게 문제를 풀어냈다. 더보기n=1: 1가지 [1] n=2: 2가지 [1,1] [2] n=3: 3가지 [1,1,1] [1,2] [2,1] n=4: 5가지 [1,1,1,1] [1,1,2] [1,2,1] [2,1,1] [2,2] n=5: 8가지 [1,1,1,1,1] [1,1,1,2] [1,1..

코딩테스트 2025.01.31

C# [프로그래머스] 모음사전

문제 설명알파벳 모음 **A, E, I, O, U**만을 사용하여 길이가 1부터 5까지인 모든 단어가 사전에 정렬되어 있다고 가정하자.이는 5진수로 이루어진 숫자라고 생각하면 된다.각 자리의 모음 알파벳은 5진수 숫자로 대응되며 해당 알파벳이 가지는 가중치 만큼의 int값을 return 한다. 예 : 'A' 의 경우에는 1을 의미한다.'AA'의 경우에는 2를 의미한다.'AAA'는 3, 'AAAA'는 4, 'AAAAA'는 5를 의미하므로 'AAAAE'는 6을 의미한다. 위 설명을 바탕으로 각각의 자리 마다 가질 수 있는 가중치를 미리 계산해서 (배열의 크기를 정해줘야 하기 때문에) 반복문을 돌려주자, 5진수로 가정하지만 첫번째 숫자를 1로 대입시켜 주기 때문에 return 받는 숫자 값과 인덱스는 다르게 ..

코딩테스트 2024.12.09

C# [프로그래머스] PCCP 기출문제 - 동영상 재생기

문제     문제 설명 동영상 재생기를 만드는 문제다.   동영상 재생기에는 3가지 기능을 지원하고 각각의 기능은 다음과 같다. 1. commands[] 의 string 배열 값이 "prev"인 경우 : 동영상을 10초 전으로 이동한다. 만약 현재 위치가 0분 10초 미만인 경우에는 0초로 이동하면 된다.  2. commands[] 의 string 배열 값이 "next"인 경우 : 동영상을 10초 후로 이동한다. 만약 남은 동영상의 길이가 10초 미만인 경우에는 영상의 길이에 해당하는 값으로 이동한다.  3. 오프닝 건너뛰기 기능 : 현재 재생 위치가 오프닝 구간에 해당한다면, 해당 구간을 스킵하는 기능이다. (op_start   주어지는 매개변수는 다음과 같다. string video_len = 동영상..

코딩테스트 2024.11.11

C# [HackerRank] Algorithm(Data Structures) - Equal Stacks

문제      문제 설명 스택과 유사한 구조로 만들어전 3개의 실린더가 있다. 각각의 실린더의 높이는 제각각인데 실린더의 요소로 구성된 숫자를 하나씩 제거하면서 3개의 실린더 높이를 동일하게 만드는 것이 최종 목표이다. 실린더는 아래의 그림과 같은 형태로 구성되고 맨 위에 위치하는 숫자에 해당하는 요소를 삭제해 가며 최종적으로는 같아진 높이의 값을 return 하면 되는 문제다.      최종적으로 같아진 높이는 5 이므로 5를 return 해주면 되는 문제다.    풀이 방법  먼저 각각의 실린더는 스택과 같은 구조로 이루어져있다. 함수에서 넘겨받는 매개 변수가 List로 이루어져 있기 때문에 각각의 리스트의 요소들을 먼저 스택에 담아주었다. 담는 과정에서 리스트를 그대로 담으면 스택의 특성 상 리스트..

코딩테스트 2024.10.14

C# [프로그래머스] Lv.2 괄호 회전하기

문제 설명 괄호 회전하기 라는 제목이여서 문제를 처음에 잘못 접근했었다. 사실 괄호를 회전하는게 아니라 문자열로 받아온 괄호의 순서를 하나씩 앞으로 당긴다고 생각하고 문제를 접근해야 한다. s라는 문자열로 여러가지 모양의 괄호가 담긴 문자열을 분석해서 각 괄호가 모두 짝이 맞는 모양인지 검사해야 한다. 만약 "[ , ] , ( , ) , { , } "이런 문자열이라면 각각 모두 괄호가 짝을 이뤘으므로 올바른 괄호가 완성되었다고 판단한다. 또한 괄호와 괄호 사이에 " { , [ , ] , }" 이런식으로 첫 괄호와 다른 모양의 괄호가 완성된 형태로 남아있고 완성시킬 수 있다면 이 또한 올바른 괄호로 판단한다. 즉 "올바른 괄호 문자열"이란 사용된 모든 괄호가 제대로 짝을 이룬 문자열인지를 검사하라는 뜻이다..

코딩테스트 2024.09.16

C# [HackerRank] Algorithm(Data Structures) - Counting Valleys

문제       문제 설명  주어진 Input에 따라 '계곡'(Valley)의 갯수를 체크해야 하는 문제이다. 처음에는 '계곡'에 대한 설명이 명확하지가 않아서 '\'과 '/'를 이루는 갯수의 합 즉 '\/'이 몇개인지를 체크하는 문제인줄 알고 풀었는데 테스트를 통과하지 못해 조금 더 자세히 문제를 분석했다. 최종적으로 이 문제가 원하는 답은 해수면에 해당하는 '- -' 밑으로 내려가서 해수면 밖으로 나오는 횟수를 체크하라는 말이었다. 위 Explanation에 나온 예시로 보자면 시작점과 끝점인 -- 를 기준점으로 삼고 그 기준점을 몇번이나 내려간 후 올라오는지 체크해야 한다. 코드 작성 시간 보다 문제를 다시 읽어보고 체크하는 시간이 오래 걸렸는데 이런 문제는 조금 더 명확하게 설명을 해주면 좋겠다는..

코딩테스트 2024.09.11

C# [HackerRank] Algorithm(String) - Strong Password

문제 설명 Louise라는 친구가 SNS 사이트에 가입하면서 설정하는 비밀번호에 관한 문제다. 다만 비밀번호를 설정할때 몇 가지의 제한사항이 있는데, 이 제한사항을 만족하는 비밀번호를 만들어야 한다. 각 조건은 다음과 같다.  비밀번호의 길이가 최소 6자 이상이어야 함.최소 하나의 숫자가 포함되어 있어야 함최소 하나의 소문자 영어 문자가 포함되어 있어야 함최소 하나의 대문자 영어 문자가 포함되어 있어야 함최소 하나의 특수문자가 포함되어 있어야 함 (특수문자는 "!@#$%^&*()-+")  해당 조건을 충족하지 않는다면 조건을 충족해야 하는 최소한의 문자의 갯수를 return 해야 한다.  Sample 예시를 살펴보면 문자의 길이는 3이며, String은 "Ab1"로 구성된다. 일단 문자에 포함되야 하는 ..

코딩테스트 2024.09.06

C# [프로그래머스] Lv.3 입국심사

문제 설명 입국 심사를 기다리는 사람들이 입국 심사에 걸리는 최소한의 시간을 계산해야 하는 문제다. 입국 심사를 기다리는 사람은 최대 10억명이고, 심사관의 숫자는 10만명 이하, 그리고 심사관 한명이 입국 심사에 걸리는 시간은 최대 10억분까지도 걸릴 수 있는 제한사항이 주어진다. 얼핏 봐도 최적화가 중요한 문제이고 역시나 완전 탐색으로 먼저 풀어보니 1분마다 시간을 계산해서는 시간복잡도에서 높은 확률로 통과하지 못하는 문제였다.  최적화를 어떻게 시킬까 고민하다가 이분 탐색(이진 탐색) 기법을 사용해서 중간 시간 값을 체크해서 경우의 수를 줄여나가는 방법으로 접근했고 다음과 같은 방식으로 풀어보았다.   해당 코드public static long solution(int n, int[] times){ ..

코딩테스트 2024.09.05