본문 바로가기

problem solving

(93)
[프로그래머스]스킬트리 check배열과 pos를 이용해 이전값과 비교함으로써 순서대로 진행되는지 체크했다. #include #include using namespace std; int check[30] = { 0 }; int solution(string skill, vector skill_trees) { int answer = 0; for(int i = 0; i
[프로그래머스]탑 #include #include using namespace std; vector solution(vector heights) { vector answer; int cur = 0; vector val; for(int i = heights.size() - 1; i >= 0; i--) { cur = i - 1; while(cur > -1 && heights[i] >= heights[cur]) { cur--; } val.push_back(cur + 1); } for(int i = val.size() - 1; i >= 0; i--) { answer.push_back(val[i]); } return answer; } Colored by Color Scripter cs
[프로그래머스][1차] 다트 게임 간단한 구현 문제 #include using namespace std; int solution(string dartResult) { int answer = 0; int val[3] = { 0 }; int pos = 0, count = -1, mul; while(pos
[프로그래머스]실패율 실패율 계산해서 store 벡터에 넣어주는데 이때 count 또는 size가 0일 때 예외처리를 해줘야한다. 값을 모두 구한 후 역순으로 정렬하고, answer 벡터에 답을 넣어준다. 이 때 반복문을 순회하면서 같은 확률이 있다면 오름차순으로 정렬해준다. #include #include #include using namespace std; vector solution(int N, vector stages) { vector answer; vector store; int size = stages.size(); for(int i = 0; i
[프로그래머스][1차] 비밀지도 주어진 정수 배열을 이진수 형태의 문자열로 바꾼 후 정답을 출력 문자열에 저장했다. #include #include using namespace std; vector solution(int n, vector arr1, vector arr2) { vector answer; for(int i = 0; i = 0) { A += '1'; arr1[i] -= divA; } else { A += '0'; } divA /= 2; } while(div > 0) { if(arr2[i] - div >= 0) { B += '1'; arr2[i] -= div; } else { B += '0'; } div /= 2; } for(int j = 0; j
[프로그래머스]문자열 내 마음대로 정렬하기 간단하게 버블소트로 구현했다. 좀 더 간단하게 하려면 반복문 안의 else if를 지우고 반복문 순회하기 전에 sort를 사용하면 된다. 반복문을 사용하지 않으면서 더 간결하게 하려면 sort에 compare를 조정해서 사용하는 방법도 있다. #include #include // #include using namespace std; void swap(string *a, string *b) { string temp = *a; *a = *b; *b = temp; } vector solution(vector strings, int n) { vector answer; // sort(strings.begin(), strings.end()); for(int i = 0; i strings[j]) { swap(stri..
[프로그래머스]2016년 별 생각없이 스르륵 풀면 되는 문제 현재까지의 모든 날을 더해서 요일의 수(7)로 나눠주면 답을 구할 수 있다. #include #include using namespace std; int mon[12] = { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; string week[7] = { "FRI","SAT","SUN","MON","TUE","WED","THU" }; string solution(int a, int b) { string answer = ""; int day = b - 1; for(int i = 0; i
[프로그래머스]체육복 예외처리가 중요한 문제다. 정렬한 후에 잃어버린 번호와 여벌을 가진 번호가 중복된다면 서로 짝을 맞출 수 있도록 예외처리 한다면 쉽게 문제를 해결할 수 있다. #include #include #include #include using namespace std; int solution(int n, vector lost, vector reserve) { int answer = n; int idx = 0; int count = 0; sort(lost.begin(), lost.end()); sort(reserve.begin(), reserve.end()); for(int i = 0; i