본문 바로가기
반응형

목록363

프로그래머스] C++ 2019 카카오 인턴십 - 호텔 방 배정(Level 4) 해당 문제는 프로그래머스 코딩테스트 연습에 있는 문제입니다. 아래 링크를 통해 풀 수 있습니다. https://programmers.co.kr/learn/courses/30/lessons/64063 [본 문제는 정확성과 효율성 테스트 각각 점수가 있는 문제입니다.] 스노우타운 에서 호텔을 운영하고 있는 스카피 는 호텔에 투숙하려는 고객들에게 방을 배정하려 합니다. 호텔에는 방이 총 k개 있으며, 각각의 방은 1번부터 k번까지 번호로 구분하고 있습니다. 처음에는 모든 방이 비어 있으며 스카피 는 다음과 같은 규칙에 따라 고객에게 방을 배정하려고 합니다. 한 번에 한 명씩 신청한 순서대로 방을 배정합니다. 고객은 투숙하기 원하는 방 번호를 제출합니다. 고객이 원하는 방이 비어 있다면 즉시 배정합니다. 고객이.. 2020. 4. 25.
프로그래머스] C++ 2019 카카오 인턴십 - 징검다리 건너기(Level 3) 해당 문제는 프로그래머스 코딩테스트 연습에 있는 문제입니다. 아래 링크를 통해 풀 수 있습니다. https://programmers.co.kr/learn/courses/30/lessons/64062# [본 문제는 정확성과 효율성 테스트 각각 점수가 있는 문제입니다.] 카카오 초등학교의 니니즈 친구들 이 라이언 선생님과 함께 가을 소풍을 가는 중에 징검다리가 있는 개울을 만나서 건너편으로 건너려고 합니다. 라이언 선생님은 니니즈 친구들 이 무사히 징검다리를 건널 수 있도록 다음과 같이 규칙을 만들었습니다. 징검다리는 일렬로 놓여 있고 각 징검다리의 디딤돌에는 모두 숫자가 적혀 있으며 디딤돌의 숫자는 한 번 밟을 때마다 1씩 줄어듭니다. 디딤돌의 숫자가 0이 되면 더 이상 밟을 수 없으며 이때는 그 다음 디.. 2020. 4. 25.
프로그래머스] C++ 2019 카카오 인턴십 - 불량사용자(Level 3) 해당 문제는 프로그래머스 코딩테스트 연습에 있는 문제입니다. 아래 링크를 통해 풀 수 있습니다. https://programmers.co.kr/learn/courses/30/lessons/64064 개발팀 내에서 이벤트 개발을 담당하고 있는 무지 는 최근 진행된 카카오이모티콘 이벤트에 비정상적인 방법으로 당첨을 시도한 응모자들을 발견하였습니다. 이런 응모자들을 따로 모아 불량 사용자라는 이름으로 목록을 만들어서 당첨 처리 시 제외하도록 이벤트 당첨자 담당자인 프로도 에게 전달하려고 합니다. 이 때 개인정보 보호을 위해 사용자 아이디 중 일부 문자를 '*' 문자로 가려서 전달했습니다. 가리고자 하는 문자 하나에 '*' 문자 하나를 사용하였고 아이디 당 최소 하나 이상의 '*' 문자를 사용하였습니다. 무지 .. 2020. 4. 25.
프로그래머스] C++ 2019 카카오 인턴십 - 튜플(Level 2) 해당 문제는 프로그래머스 코딩테스트 연습에 있는 문제입니다.아래 링크를 통해 풀 수 있습니다. https://programmers.co.kr/learn/courses/30/lessons/64065 문제 설명셀수있는 수량의 순서있는 열거 또는 어떤 순서를 따르는 요소들의 모음을 튜플(tuple)이라고 합니다. n개의 요소를 가진 튜플을 n-튜플(n-tuple)이라고 하며, 다음과 같이 표현할 수 있습니다.(a1, a2, a3, ..., an)튜플은 다음과 같은 성질을 가지고 있습니다.중복된 원소가 있을 수 있습니다. ex : (2, 3, 1, 2)원소에 정해진 순서가 있으며, 원소의 순서가 다르면 서로 다른 튜플입니다. ex : (1, 2, 3) ≠ (1, 3, 2)튜플의 원소 개수는 유한합니다.원소의 개.. 2020. 4. 25.
프로그래머스] C++ 2018 KAKAO BLIND RECRUITMENT [3차] 압축 해당 문제는 프로그래머스 코딩테스트 연습에 있는 문제입니다. 아래 링크를 통해 풀 수 있습니다. https://programmers.co.kr/learn/courses/30/lessons/17684 압축 신입사원 어피치는 카카오톡으로 전송되는 메시지를 압축하여 전송 효율을 높이는 업무를 맡게 되었다. 메시지를 압축하더라도 전달되는 정보가 바뀌어서는 안 되므로, 압축 전의 정보를 완벽하게 복원 가능한 무손실 압축 알고리즘을 구현하기로 했다. 어피치는 여러 압축 알고리즘 중에서 성능이 좋고 구현이 간단한 LZW(Lempel–Ziv–Welch) 압축을 구현하기로 했다. LZW 압축은 1983년 발표된 알고리즘으로, 이미지 파일 포맷인 GIF 등 다양한 응용에서 사용되었다. LZW 압축은 다음 과정을 거친다. .. 2020. 4. 20.
[C++ 풀이] Codility - Lessons 10 (Prime and composite numbers), Flags // you can use includes, for example: // #include // you can write to stdout for debugging purposes, e.g. // cout A[A.size() - 2]){ v.pop_back(); v.emplace_back(A.size() - 1); } int flag = 2; while(true){ int num = v[0]; for(int i = 1; i flag){ count++; num = v[i]; if(flag == count){ cmp = count; count = 1; break; } } } if(flag > cmp) return cmp; flag++; } }​ ht.. 2020. 3. 26.
프로그래머스] C++, golang 스택/큐- 기능개발(Level 2) 해당 문제는 프로그래머스 코딩테스트 연습에 있는 문제입니다. 아래 링크를 통해 풀 수 있습니다. https://programmers.co.kr/learn/courses/30/lessons/42586 프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 기능보다 먼저 개발될 수 있고, 이때 뒤에 있는 기능은 앞에 있는 기능이 배포될 때 함께 배포됩니다. 먼저 배포되어야 하는 순서대로 작업의 진도가 적힌 정수 배열 progresses와 각 작업의 개발 속도가 적힌 정수 배열 speeds가 주어질 때 각 배포마다 몇 개의 기능이 배포되는지를 return 하도록 soluti.. 2020. 3. 18.
프로그래머스] C++ 스킬체크(Level 2) 해당 문제는 프로그래머스 코딩테스트 연습에 있는 문제입니다.아래 링크를 통해 풀 수 있습니다. https://programmers.co.kr/learn/courses/30/lessons/42839 문제 설명선행 스킬이란 어떤 스킬을 배우기 전에 먼저 배워야 하는 스킬을 뜻합니다.예를 들어 선행 스킬 순서가 스파크 → 라이트닝 볼트 → 썬더일때, 썬더를 배우려면 먼저 라이트닝 볼트를 배워야 하고, 라이트닝 볼트를 배우려면 먼저 스파크를 배워야 합니다.위 순서에 없는 다른 스킬(힐링 등)은 순서에 상관없이 배울 수 있습니다. 따라서 스파크 → 힐링 → 라이트닝 볼트 → 썬더와 같은 스킬트리는 가능하지만, 썬더 → 스파크나 라이트닝 볼트 → 스파크 → 힐링 → 썬더와 같은 스킬트리는 불가능합니다.선행 스킬 순.. 2020. 2. 12.
프로그래머스] C++ 깊이/너비 우선 탐색(DFS/BFS) - 타겟 넘버(Level 2) 해당 문제는 프로그래머스 코딩테스트 연습에 있는 문제입니다. 아래 링크를 통해 풀 수 있습니다. https://programmers.co.kr/learn/courses/30/lessons/42839 n개의 음이 아닌 정수가 있습니다. 이 수를 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다. -1+1+1+1+1 = 3 +1-1+1+1+1 = 3 +1+1-1+1+1 = 3 +1+1+1-1+1 = 3 +1+1+1+1-1 = 3 사용할 수 있는 숫자가 담긴 배열 numbers, 타겟 넘버 target이 매개변수로 주어질 때 숫자를 적절히 더하고 빼서 타겟 넘버를 만드는 방법의 수를 return 하도록 soluti.. 2020. 2. 12.
프로그래머스] C++ 완전탐색 - 소수찾기(Level 2) 해당 문제는 프로그래머스 코딩테스트 연습에 있는 문제입니다. 아래 링크를 통해 풀 수 있습니다. https://programmers.co.kr/learn/courses/30/lessons/42839 한자리 숫자가 적힌 종이 조각이 흩어져있습니다. 흩어진 종이 조각을 붙여 소수를 몇 개 만들 수 있는지 알아내려 합니다. 각 종이 조각에 적힌 숫자가 적힌 문자열 numbers가 주어졌을 때, 종이 조각으로 만들 수 있는 소수가 몇 개인지 return 하도록 solution 함수를 완성해주세요. 제한사항 numbers는 길이 1 이상 7 이하인 문자열입니다. numbers는 0~9까지 숫자만으로 이루어져 있습니다. 013은 0, 1, 3 숫자가 적힌 종이 조각이 흩어져있다는 의미입니다. 입출력 예 number.. 2020. 2. 10.
C++] map 사용법과 원리 map이란? 배열을과 비슷하게 생겼습니다. 배열은 index값을 통해 값을 찾죠. ex) a[3] = { 10. 20. 30 }; a[0] = 10, a[1] = 20, a[2] = 30. 이런식으로 a라는 배열에서 원하는 값을 얻기 위해 0 ~ 2까지의 번호를 입력해 얻어옵니다. map은 순차적으로 증가하는 배열의 index와는 다르게 key와 value로 구성되어 있습니다. key는 사용자가 직접 정의해줘야 합니다. key는 int가 될 수있고 string이 될 수 있고 그밖의 자료형도 가능합니다. map은 다음과 같은 형태로 저장됩니다. map은 red-black tree로 구성되어 key별로 오름차순 혹은 내림차순이 가능합니다. 아무것도 지정안하고 map만 하면 오름차순으로 정렬이 되면서 삽입이 .. 2020. 2. 5.
프로그래머스] C++ 정렬 - K번째 수(Level 1) 해당 문제는 프로그래머스 코딩테스트 연습에 있는 문제입니다. 아래 링크를 통해 풀 수 있습니다. https://programmers.co.kr/learn/courses/30/lessons/42748 배열 array의 i번째 숫자부터 j번째 숫자까지 자르고 정렬했을 때, k번째에 있는 수를 구하려 합니다. 예를 들어 array가 [1, 5, 2, 6, 3, 7, 4], i = 2, j = 5, k = 3이라면 array의 2번째부터 5번째까지 자르면 [5, 2, 6, 3]입니다. 1에서 나온 배열을 정렬하면 [2, 3, 5, 6]입니다. 2에서 나온 배열의 3번째 숫자는 5입니다. 배열 array, [i, j, k]를 원소로 가진 2차원 배열 commands가 매개변수로 주어질 때, commands의 모든.. 2020. 1. 30.
프로그래머스] C++ 해시 - 베스트앨범(Level 3) 해당 문제는 프로그래머스 코딩테스트 연습에 있는 문제입니다. 아래 링크를 통해 풀 수 있습니다. https://programmers.co.kr/learn/courses/30/lessons/42579 스트리밍 사이트에서 장르 별로 가장 많이 재생된 노래를 두 개씩 모아 베스트 앨범을 출시하려 합니다. 노래는 고유 번호로 구분하며, 노래를 수록하는 기준은 다음과 같습니다. 속한 노래가 많이 재생된 장르를 먼저 수록합니다. 장르 내에서 많이 재생된 노래를 먼저 수록합니다. 장르 내에서 재생 횟수가 같은 노래 중에서는 고유 번호가 낮은 노래를 먼저 수록합니다. 노래의 장르를 나타내는 문자열 배열 genres와 노래별 재생 횟수를 나타내는 정수 배열 plays가 주어질 때, 베스트 앨범에 들어갈 노래의 고유 번호.. 2020. 1. 30.
프로그래머스] C++ 해시 - 위장(Level 2) 해당 문제는 프로그래머스 코딩테스트 연습에 있는 문제입니다. 아래 링크를 통해 풀 수 있습니다. https://programmers.co.kr/learn/courses/30/lessons/42578 해당 문제는 경우의 수 문제로 공식을 사용해야 합니다. 문자열의 처리를 함과 동시에 카운트를 세는 문제입니다. 공식은 다음과 같습니다. 예를 들어 '티, 바지, 안경' 3가지가 있다고 가정한다면 ((티의 갯수 + 1) * (바지의 갯수 + 1) * (안경의 갯수 + 1)) - 1 입니다. 아래는 완성된 코드입니다. #include #include #include #include #include using namespace std; int solution(vector clothes) { int answer = .. 2020. 1. 30.
프로그래머스] C++ 해시 - 전화번호 목록(Level 2) phone_book에 있는 문자열들 중 접두사가 중복되는 경우가 있으면 false, 없으면 true를 반환하는 문제입니다. 예를들어 예제에 나와있는것 처럼 "119", "97674223", "1195524421" 이 있다고 가정한다면 "119"는 "1195524421"에 중복되므로 false입니다. 반면 "123", "456", "789" 부분은 중복되는것이 없으므로 true입니다. 문자를 하나씩 비교하는 방법도 있지만 비효율적이라는 판단이 서서 트라이(trie)구조로 풀었습니다. 트라이구조는 https://hwan-shell.tistory.com/133?category=771708 에서 확인하시면 됩니다. #include #include #include #define NUMBER 10 using nam.. 2020. 1. 23.
728x90
반응형

스킨편집 -> html 편집에서