프로그래머스

· Language/C++
코딩테스트 연습 - 게임 맵 최단거리 [[1,0,1,1,1],[1,0,1,0,1],[1,0,1,1,1],[1,1,1,0,1],[0,0,0,0,1]] 11 [[1,0,1,1,1],[1,0,1,0,1],[1,0,1,1,1],[1,1,1,0,0],[0,0,0,0,1]] -1 programmers.co.kr N * M 행렬에서 최단 거리를 보장해주는 탐색 알고리즘인 BFS를 사용하였다. 단순히 N*M의 범위를 넘지 않고 벽이 아닌 곧이 있을 경우 해당 값을 큐에 삽입 후 좌표의 값을 1 증가시켰다. 최종적으로 반환 값은 N*M 좌표의 값을 반환시켰다. 하지만 해당 값이 1인 경우 모든 벽에 둘러 쌓여서 탐색을 하지 못한 경우이기에 -1 값을 반환하도록 설정하였다. #include #include using na..
· Language/C++
코딩테스트 연습 - 6주차 복서 선수들의 몸무게 weights와, 복서 선수들의 전적을 나타내는 head2head가 매개변수로 주어집니다. 복서 선수들의 번호를 다음과 같은 순서로 정렬한 후 return 하도록 solution 함수를 완성해주세요 programmers.co.kr sort 함수를 사용하기 위해서 벡터 함수 안에 모든 값을 저장하였다. {{선수의 몸무게, idx 값},{ 승률,자신의 몸무게보다 큰 선수를 이긴 횟수}} 비교함수에 따른 sort를 하였다. 승률이 같지 않으면 승률에 따른 정렬. 승률이 같으면 자신의 몸무게보다 큰 선수를 이긴 횟수가 같지 않으면 그에 따른 정렬..... 마지막 idx 값이 작은 순으로 정렬. #include #include #include using namesp..
· Language/C++
코딩테스트 연습 - 5주차_모음사전 사전에 알파벳 모음 'A', 'E', 'I', 'O', 'U'만을 사용하여 만들 수 있는, 길이 5 이하의 모든 단어가 수록되어 있습니다. 사전에서 첫 번째 단어는 "A"이고, 그다음은 "AA"이며, 마지막 단어는 "UUUUU"입니 programmers.co.kr 나올 수 있는 경우의 수가 10000 이하이기 때문에 DFS로 충분히 시간복잡도 생각하지 않고 풀 수 있다. alpha 라는 모음 값이 저장되어 있는 배열을 만들어서 나올 수 있는 모든 경우의 수를 map 함수를 이용해서 저장한다. 단순 구현 문제. #include #include #include using namespace std; int count =1; vector alpha = {"A","E","I",..
· Language/C++
> lang >> job >> level >> food >> score; vs[0][0] = lang; vs[1][0] = job; vs[2][0] = level; vs[3][0] = food; for(int i=0 ; i lang >> temp >> job >> temp >> level >> temp >> food >> score; string s = lang + job + level + food; auto itr = lower_bound(info_[s].begin(),info_[s].end(),stoi(score)); answer[index++] = info_[s].size() - (itr - info_[s].begin()); } return answer; }
· Language/C++
코딩테스트 연습 - 합승 택시 요금 6 4 6 2 [[4, 1, 10], [3, 5, 24], [5, 6, 2], [3, 1, 41], [5, 1, 24], [4, 6, 50], [2, 4, 66], [2, 3, 22], [1, 6, 25]] 82 7 3 4 1 [[5, 7, 9], [4, 6, 4], [3, 6, 1], [3, 2, 3], [2, 1, 6]] 14 6 4 5 6 [[2,6,6], [6,3,7], [4,6,7], [6,5,11], [2,5,12], [5,3,20], [2,4 programmers.co.kr 시작 지점에서 -> 도착 지점까지의 최소 비용을 탐색해야하기 때문에 플로이드-와샬 알고리즘을 사용해야 한다. 2차원 배열을 만들고 해당 값들을 큰 값으로 저장 시킨다. 여기서 주의해야할..
· Language/C++
코딩테스트 연습 - 카드 짝 맞추기 [[1,0,0,3],[2,0,0,0],[0,0,0,2],[3,0,1,0]] 1 0 14 [[3,0,0,2],[0,0,1,0],[0,1,0,0],[2,0,0,3]] 0 1 16 programmers.co.kr 카드의 수가 6장으로 제한되어 있다. 그렇기에 카드 숫자에 따른 순열 조합으로 가장 최단 거리를 조사했다. 먼저 board에 있는 카드의 숫자를 card 벡터에 저장하여, 중복된 숫자는 제거하고 next_permutation으로 bfs 탐색을 한다. bfs로 카드를 탐색하기 전에 각 순열마다 최소 거리를 구해야하기 때문에 순열이 돌때마다 board와 r, c 값은 항상 새로운 인자에 초기화 시켜준다. bfs 함수에 들어가면 방문함수와 queue를 생성했다. queu..
· Language/C++
코딩테스트 연습 - 광고 삽입 시간을 나타내는 HH, H1, H2의 범위는 00~99, 분을 나타내는 MM, M1, M2의 범위는 00~59, 초를 나타내는 SS, S1, S2의 범위는 00~59까지 사용됩니다. 잘못된 시각은 입력으로 주어지지 않습니다. (예: 04:60:24, 11 programmers.co.kr #include #include #include #include using namespace std; vector dp(360000,0); string solution(string play_time, string adv_time, vector logs) { string answer = ""; int start_hh,start_mm,start_ss , end_hh,end_mm,end_ss,st..
· Language/C++
코딩테스트 연습 - 4주차 개발자가 사용하는 언어와 언어 선호도를 입력하면 그에 맞는 직업군을 추천해주는 알고리즘을 개발하려고 합니다. 아래 표는 5개 직업군 별로 많이 사용하는 5개 언어에 직업군 언어 점수를 부 programmers.co.kr 개발자 언어 선호도를 map 함수를 이용해서 해당 언어에 대한 값을 저장해준다. table의 string 벡터에서 처음 값을 title에 저장한다. 개발자에 따른 점수를 저장할 수 있는 벡터함수를 만든다. 해당 개발자가 선호하는 언어가 언어 선호도 표에 대한 값을 더해준다. 이때 더해줄때 순서에 따른 점수가 다르기 때문에 5점부터 시작해서 1점까지 순차적으로 곱해준다. 개발자에 따른 점수 벡터함수를 정렬한다. ( 첫번째는 점수, 두번째는 문자열 ) #includ..
행복한쿼콰
'프로그래머스' 태그의 글 목록