목록프로그래머스 알고리즘/Weekly Challenge (10)
N
https://programmers.co.kr/learn/courses/30/lessons/87946 코딩테스트 연습 - 12주차 XX게임에는 피로도 시스템(0 이상의 정수로 표현합니다)이 있으며, 일정 피로도를 사용해서 던전을 탐험할 수 있습니다. 이때, 각 던전마다 탐험을 시작하기 위해 필요한 "최소 필요 피로도"와 던 programmers.co.kr 제한 사항이 크지 않기 때문에 모든 경우의 수를 구해 답을 찾으면 된다. 조합을 위해 next_permutaion을 이용. 인덱스의 위치를 next_permutation()을 이용해 모든 경우의 수를 구하고, for문을 통해 조합된 인덱스로 던전을 돈다. 이후, answer을 갱신해 나가면 끝! #include #include #include #incl..
https://programmers.co.kr/learn/courses/30/lessons/86048 코딩테스트 연습 - 7주차_입실 퇴실 사회적 거리두기를 위해 회의실에 출입할 때 명부에 이름을 적어야 합니다. 입실과 퇴실이 동시에 이뤄지는 경우는 없으며, 입실 시각과 퇴실 시각은 따로 기록하지 않습니다. 오늘 회의실에는 programmers.co.kr map을 활용. 변수 설명 n = enter의 크기(사람 수) leaveIndex = leave 벡터를 순회할 때 지금까지 순회한 인덱스를 저장. answer = 정답 저장 벡터 m = 입실과 퇴실을 확인하는 map cnt = 퇴실할 사람이 지금까지 반드시 만난 사람의 수 enter 벡터를 순회하면서 입실한 사람은 m에서 true로 바꿔주도록 한다. 사..
https://programmers.co.kr/learn/courses/30/lessons/86971?language=cpp 코딩테스트 연습 - 9주차 9 [[1,3],[2,3],[3,4],[4,5],[4,6],[4,7],[7,8],[7,9]] 3 7 [[1,2],[2,7],[3,7],[3,4],[4,5],[6,7]] 1 programmers.co.kr bfs를 활용한 문제 풀이. 우선 주어진 wires 벡터로 그래프를 그려 주도록 하자. 이후 한 노드를 선택해 연결 되어 있는 노드를 끊고 BFS 탐색을 진행하여 끊은 노드의 개수를 구하면 된다. 이때, n * n 크기의 visited 벡터를 만들어, 이미 끊었던 간선을 다시 끊는 일이 없도록 가지를 친다. bfs() 함수에 그려 놓았던 그래프와 n, 현..
https://programmers.co.kr/learn/courses/30/lessons/86491 코딩테스트 연습 - 8주차 [[10, 7], [12, 3], [8, 15], [14, 7], [5, 15]] 120 [[14, 4], [19, 6], [6, 16], [18, 7], [7, 11]] 133 programmers.co.kr 주어진 sizes의 원소들을 오름차순으로 정렬한 후, w와 h의 최대값을 구해 곱하면 된다. #include #include #include using namespace std; int solution(vector sizes) { int wMax = 0; int hMax = 0; for(int i = 0; i < sizes.size(); i++){ sort(sizes[i..
https://programmers.co.kr/learn/courses/30/lessons/85002?language=cpp 코딩테스트 연습 - 6주차 복서 선수들의 몸무게 weights와, 복서 선수들의 전적을 나타내는 head2head가 매개변수로 주어집니다. 복서 선수들의 번호를 다음과 같은 순서로 정렬한 후 return 하도록 solution 함수를 완성해주세요 programmers.co.kr set과 map을 활용. weightSet은 주어진 weights를 new Set을 통해 중복없이 몸무게를 순서대로 나열하고 스프레드 연산자를 이용해 다시 배열로 만들었다. 이를 통해 복서들의 몸무게 순위를 매길 수 있으며, weightsMap에 key를 몸무게, value를 등수로 매겼다. 이후 이중 fo..
https://programmers.co.kr/learn/courses/30/lessons/85002?language=cpp 코딩테스트 연습 - 6주차 복서 선수들의 몸무게 weights와, 복서 선수들의 전적을 나타내는 head2head가 매개변수로 주어집니다. 복서 선수들의 번호를 다음과 같은 순서로 정렬한 후 return 하도록 solution 함수를 완성해주세요 programmers.co.kr 기본적인 STL을 모두 사용한 것 같다..ㅎㅎ vector, map, set, pair를 사용했으며, 정렬을 위한 algorithm 헤더까지 사용했다. 정렬의 우선순위가 승률 > 자신보다 무거운 사람을 이긴 수 > 자신의 몸무게 등수 > 자신의 인덱스 번호 로 되어 있다. 정렬을 하기 전, 복서들의 몸무게 ..
https://programmers.co.kr/learn/courses/30/lessons/84512 코딩테스트 연습 - 5주차 사전에 알파벳 모음 'A', 'E', 'I', 'O', 'U'만을 사용하여 만들 수 있는, 길이 5 이하의 모든 단어가 수록되어 있습니다. 사전에서 첫 번째 단어는 "A"이고, 그다음은 "AA"이며, 마지막 단어는 "UUUUU"입니 programmers.co.kr --설명 추가 예정-- function solution(word) { const character = { "A": 0, "E": 1, "I": 2, "O": 3, "U": 4, }; const distance = [781 ,156, 31, 6, 1]; return word.split("").reduce((acc, va..
https://programmers.co.kr/learn/courses/30/lessons/84325 코딩테스트 연습 - 4주차 개발자가 사용하는 언어와 언어 선호도를 입력하면 그에 맞는 직업군을 추천해주는 알고리즘을 개발하려고 합니다. 아래 표는 5개 직업군 별로 많이 사용하는 5개 언어에 직업군 언어 점수를 부 programmers.co.kr 맵을 활용한 문제 풀이. 우선 table에 있는 문자열을 모두 토크 나이징 한다. 토크 나이징 한 값을 v 벡터에 저장하고, 해당 직군에 따른 언어 점수를 lang 맵에 저장하도록 한다. 5점 ~ 1점 순서로, v 벡터 안에 있는 언어를 key, 점수를 value로 lang에 저장. lang 맵을 다시 jobs 맵에 저장하는데, key는 v[0]에 해당하는 직군..