본문 바로가기

Algorithm/Programers - C++

(121)
[프로그래머스] 깊이/너비 우선 탐색(DFS/BFS) - 타겟 넘버 문제 풀이 #include #include using namespace std; vector datas; int answer; int tarN; void dfs(int n, int before); int solution(vector numbers, int target) { answer = 0; datas = numbers; tarN = target; dfs(0, 0); return answer; } void dfs(int n, int before){ if(n == datas.size()){ if(before == tarN) answer++; return; } dfs(n+1, before + datas[n]); dfs(n+1, before - datas[n]); return; } dfs를 사용하여 모든 경..
[프로그래머스] 힙(Heap) - 더 맵게 / 우선순위큐(priority_queue) 문제 풀이 #include #include #include //heap 구현 #include // greater using namespace std; int solution(vector scoville, int K) { int answer = 0; priority_queue pq; for(int i =0; i < scoville.size(); i++){ pq.push(scoville[i]); } while(pq.top() < K){ if(pq.size()
[프로그래머스] 스택/큐 - 기능개발 문제 풀이 1 #include #include #include using namespace std; vector solution(vector progresses, vector speeds) { vector answer; vector days; for (int i = 0; i = days[i]) { count++; } else { answer.push_back(count); count = 1..
[프로그래머스] 124 나라의 숫자 / insert 문제 풀이 #include #include using namespace std; string solution(int n) { //3진법 string answer = ""; vector nara = {"1","2","4"}; while(n>0){ n = n-1; answer.insert(0,nara[n%3]); n = n/3; } return answer; } 숫자가 1, 2, 4 뿐이므로 3진법과 동일한 방법이라 생각하고 풀었다. 3진수랑 비교했을 때 각 자리다 1씩 차이가 생기기 때문에 -1을 해주었다. 다른 사람 풀이 #include #include using namespace std; string change124(int no) { string answer = ""; int a; while(no >..
[프로그래머스] 멀쩡한 사각형 / 최대공약수, 유클리드 호재법 문제 풀이 #include #include #include using namespace std; long long solution(int w,int h) { long long answer = 1; long long a = min(w,h);// 최대공약수 (모서리 모서리로 이어지는 네모의 개수) for(; a>0; a--){ if(w%a == 0 && h%a == 0) break; } long long ws = w/a, hs = h/a; return answer = (long long)w*h - (ws + hs - 1)*a; } 처음엔 최대 공약수를 int값으로 구했기 때문에 오류가 발생했다. 범위 오류가 생길 수 있기 때문에 long long 인지 int인지 잘 보고 구할 것! 최대공약수를 사용하는 이유..
[프로그래머스] 하샤드 수 문제 풀이 #include #include using namespace std; bool solution(int x) { string s = to_string(x); int num = 0; for(int i=0; i
[프로그래머스] 핸드폰 번호 가리기 / replace 문제 프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다. 전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *으로 가린 문자열을 리턴하는 함수, solution을 완성해주세요. 풀이 #include #include using namespace std; string solution(string phone_number) { string answer = phone_number; answer.replace(answer.begin(), answer.end()-4, answer.size()-4, '*'); return answer; } replace replace는 용도에 따라 다양한 형태의 오버 로딩이 존재한다..
[프로그래머스] 콜라츠 추측 문제 풀이 #include #include using namespace std; int solution(int num) { int answer = 0; long n = num; while(n != 1){ if(n%2 == 0) n /=2; else n = n*3 + 1; if(++answer == 500) return -1; } return answer; }