본문 바로가기

분류 전체보기

(191)
프로그래머스_기능개발(C++, JAVA) programmers.co.kr/learn/courses/30/lessons/42586 코딩테스트 연습 - 기능개발 프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 programmers.co.kr [문제 풀이] queue을 이용하여 문제를 풀었습니다. 이 문제는 함께 배포될 수 있는 작업의 수를 각각 구하는 문제입니다. 작업이 배포되기 위해서는 아래의 조건을 만족하여야 합니다. 진행 중인 작업 + 작업 속도 * 작업일 >= 100을 만족해야 합니다. 완료되지 않은 작업이 앞에 존재하지 않아야 합니다. 완료된 작업 중 배포되지 않은 작업이 뒤이어 존재한다면(연속적..
프로그래머스_베스트앨범(C++, JAVA) programmers.co.kr/learn/courses/30/lessons/42579 코딩테스트 연습 - 베스트앨범 스트리밍 사이트에서 장르 별로 가장 많이 재생된 노래를 두 개씩 모아 베스트 앨범을 출시하려 합니다. 노래는 고유 번호로 구분하며, 노래를 수록하는 기준은 다음과 같습니다. 속한 노래가 programmers.co.kr [문제 풀이] map을 이용하여 문제를 풀었습니다. 이 문제는 아래의 조건을 만족하는 값을 찾는 것입니다. 속한 노래가 많이 재생된 장르를 먼저 수록합니다. 장르 내에서 많이 재생된 노래를 먼저 수록합니다. 장르 내에서 재생 횟수가 같은 노래 중에서는 고유 번호가 낮은 노래를 먼저 수록합니다. 주의할 점은 같은 장르 안에서는 최대 2개까지만 선택할 수 있다는 것입니다. 예를..
프로그래머스_전화번호 목록(C++, JAVA) programmers.co.kr/learn/courses/30/lessons/42577 코딩테스트 연습 - 전화번호 목록 전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조 programmers.co.kr [문제 풀이] set을 이용하여 문제를 풀었습니다. 이 문제는 전화번호 목록 중에 접두어로써 존재하는 번호가 있는지를 찾는 문제입니다. 짧은 시간 안에 번호의 존재를 찾기 위해 set을 이용하여 전화번호 목록을 저장하였고 전화번호 리스트를 순회하며 길이가 N인 번호에 대해 0 ~N까지의 번호 중 set에 존재하는 번호가 있는지 찾아주었습니다. [C++] #include #..
프로그래머스_완주하지 못한 선수(C++, java) programmers.co.kr/learn/courses/30/lessons/42576 코딩테스트 연습 - 완주하지 못한 선수 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수 programmers.co.kr [문제 풀이] map을 이용하여 문제를 풀었습니다. 이 문제는 마라톤에 참여한 선수 중에 완주를 하지 못한 지원자를 찾는 문제입니다. 지원자 중에 동명이인이 존재 할 수도 있습니다. 문제를 푸는 방식은 입력으로 주어진 competition 벡터를 map에 넣어 이름들을 세어줍니다. 그 후 participant 백터를 순회하며 존재하면 빼주고 map에 존재하..
프로그래머스_주식가격(C++, JAVA) programmers.co.kr/learn/courses/30/lessons/42584 코딩테스트 연습 - 주식가격 초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요. 제한사항 prices의 각 가격은 1 이상 10,00 programmers.co.kr [C++] #include #include using namespace std; vector solution(vector prices) { vector answer; for(int i = 0; i < prices.size(); i++){ int cnt = 0; for(int j = i + 1; j < prices.size(); j++)..
프로그래머스_위장(C++, JAVA) programmers.co.kr/learn/courses/30/lessons/42578 코딩테스트 연습 - 위장 programmers.co.kr [문제 풀이] Map을 이용하여 문제를 풀었습니다. 이 문제는 서로 다른 의상의 종류를 선택해 나올 수 있는 모든 경우의 수를 찾는 문제 였습니다. 문제를 풀기 위해 Map에 의상의 종류의 개수를 저장해 줍니다. 그 후 의상의 개수를 곱해서 경우의 수를 구하고 아무것도 입지 않은 경우를 빼줍니다. [C++] #include #include #include #include #include using namespace std; map spy; int solution(vector clothes) { int answer = 1; for(int i = 0; i < clo..
백준 17471_게리맨더링(C++) www.acmicpc.net/problem/17471 17471번: 게리맨더링 선거구를 [1, 4], [2, 3, 5, 6]으로 나누면 각 선거구의 인구는 9, 8이 된다. 인구 차이는 1이고, 이 값보다 더 작은 값으로 선거구를 나눌 수는 없다. www.acmicpc.net [문제 풀이] 브루트 포스(Brute force)를 이용하여 문제를 풀었습니다. 이 문제는 주어진 입력을 두 집합으로 나누었을 때 나누어진 집합이 그래프로 연결 되어 있는지를 찾는 문제였습니다. 예를 들어 두 집합 A ={ 1, 2, 3 }, B = { 4, 5, 6 }으로 나누었을 때 A의 노드들이 A의 노드를 통해서 모두 연결 되어 있어야 합니다. 반대로 B 또한 마찬가지입니다. 파란색 집합의 원소 5가 B의 노드를 통해 6으로..
백준 2668_숫자고르기(C++) www.acmicpc.net/problem/2668 2668번: 숫자고르기 세로 두 줄, 가로로 N개의 칸으로 이루어진 표가 있다. 첫째 줄의 각 칸에는 정수 1, 2, …, N이 차례대로 들어 있고 둘째 줄의 각 칸에는 1이상 N이하인 정수가 들어 있다. 첫째 줄에서 숫자를 적절 www.acmicpc.net [문제 풀이] DFS를 이용하여 문제를 풀었습니다. 이 문제는 배열을 적절히 선택 했을 때 배열의 인덱스와 배열의 값이 같은 최대 크기의 집합을 찾는 문제입니다. 이 문제의 로직은 싸이클을 찾는 문제와 비슷합니다. 배열의 값을 타고 들어갔을 때 배열의 인덱스로 다시 돌아오는지 하면 됩니다. 코드 설명 배열의 값을 exist 배열에 저장해 둡니다. 입력 받은 배열을 순회 하면서 exist에 저장되 있..