본문 바로가기

Algorithm

(400)
[프로그래머스] 정렬 - 가장 큰 수 / multimap, sort, compare 문제 풀이 #include #include #include using namespace std; string solution(vector numbers) { string answer = ""; multimap map; for(auto number : numbers){ string n = to_string(number); while(n.size() < 4) { // numbers의 원소는 0 이상 1,000 이하 n = n + n; } n = n.substr(0, 4); map.insert(make_pair(n,to_string(number).size())); } for(auto m : map){ string str = m.first; answer = str.substr(0, m.second) + answ..
[프로그래머스] 프린터 - 스택/큐, max_element, min_element 문제 풀이 #include #include #include using namespace std; int solution(vector priorities, int location) { queue q; int index = location, j, next, count = 0; bool en_pop = true; for(int pri : priorities){ q.push(pri); } while(1){ en_pop = true; j = q.front(); q.pop(); if(q.empty()){ count++; break; } int size = q.size(); for (int i=0; i j) en_pop = false; q.push(next); } if(!en_pop){ // 더 높은 우선순위가 있음..
[프로그래머스] 튜플 / map 문제 풀이 #include #include #include #include #include using namespace std; typedef pair ii; vector solution(string s) { vector answer; map map; int n; // '{', ',' '}' 다 공백으로 replace for(int i=0; i> n){ map[n]++; } //벡터를 사용해 map을 value값으로 정렬 ( 튜풀 ) vector v(map.begin(), map.end()); sort(v.begin(), v.end(), [](ii a, ii b){ return a.second > b.second; }); for(ii a : v){ answer.push_back(a.first); } re..
[프로그래머스] 수식 최대화 / stack 문제 풀이 #include #include #include #include using namespace std; long long calc(long long a, long long b, char c){ long long n = 0; switch(c){ case '-': n = a-b; break; case '+': n = a+b; break; case '*': n = a*b; break; } return n; } long long solution(string expression) { vector priors = {{'-', '+', '*'},{'-', '*', '+'}, {'+', '-', '*'}, {'+', '*', '-'}, {'*', '-', '+'}, {'*', '+', '-'}}; long l..
[프로그래머스] 해시 - 전화번호 목록 문제 풀이 #include #include #include using namespace std; bool solution(vector phone_book) { bool answer = true; sort(phone_book.begin(), phone_book.end()); string str; //이중포문은 시간초과 /* for(int i=0; i
[프로그래머스] 거리두기 확인하기 문제 풀이 #include #include #include // memset using namespace std; bool visited[5][5]; int dx[4]; int dy[4]; bool isSafe ; void dfs(int y, int x, vector place, int count){ visited[y][x] = true; if(count>2 || place[y][x] == 'X') { return; } else { if(count !=0 && place[y][x] == 'P') { isSafe =false; return; } for(int i=0; i=0&&py>=0) && (px
[프로그래머스] 메뉴 리뉴얼 / substr, 순열과 조합 문제 입출력 예 풀이 #include #include #include #include #include #include using namespace std; map hashMap; //정답 봄 void dfs(int targetnum, string str, string order) { if (str.size() == targetnum) { hashMap[str] += 1; return ; } for (int i = 0; i < order.size(); i++) dfs(targetnum, str+order[i], order.substr(i+1)); return ; } vector solution(vector orders, vector course) { vector answer; //없으면 오류 for (st..
[프로그래머스] 뉴스 클러스터링 / append, find, isalpha, transform 문제 풀이 #include #include #include #include using namespace std; vector v(string str){ char before= tolower(str[0]); vector vec; for(int i=1; i 'z') || (tolower(str[i]) 'z')) { before = tolower(str[i]); continue; } string s; s.append(1, before).append(1, tolower(str[i])); vec.push_back(s); before = tolower(str[i]); } return vec; } int solution(string str1, string str2) {..