분류 전체보기 (485) 썸네일형 리스트형 [프로그래머스] 멀쩡한 사각형 / 최대공약수, 유클리드 호재법 문제 풀이 #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인지 잘 보고 구할 것! 최대공약수를 사용하는 이유.. 그래프 - DFS 와 BFS DFS( Depth-First Search / 깊이 우선 탐색) 해당 노드의 자식 노드들을 모두 탐색한 후 형제 노드를 탐색한다. 모든 노드를 방문하고자 할 때 사용 스택 또는 재귀 함수를 사용하여 구현한다. DFS의 장점 단지 현 경로상의 노드들만을 기억하면 되므로 저장공간의 수요가 비교적 적다. 목표 노드가 깊은 단계(트리의 레벨이 높은 곳)에 있을 경우 해를 빨리 구할 수 있다. DFS의 단점 해가 없는 경로에 깊이 빠질 가능성이 있다. 따라서 실제의 경우 임의의 깊이까지만 탐색하고 목표 노드를 발견하지 못하면 다음의 경로를 따라 탐색하는 방법이 유용할 수 있다. 얻어진 해가 최단 경로가 된다는 보장이 없다. 이는 목표에 이르는 경로가 다수인 문제에 대해 깊이우선 탐색은 해에 다다르면 탐색을 끝내버.. [프로그래머스] 카카오프렌즈 컬러링북 / DFS과 BFS, memset 문제 풀이 #include #include // memset using namespace std; bool visit[100][100]; int num , cnt, N, M; int dx[4]; int dy[4]; //깊이탐색 //DFS : 깊이우선탐색 void DFS(int x, int y, vector picture, int num) { visit[x][y] = true; cnt++; for (int i = 0; i = M || ny >= N) continue; if (picture[nx][ny] == num && !visit[nx][ny]) { DFS(nx,.. [프로그래머스] 오픈채팅방 / stringstream 문제 풀이 1 #include #include #include #include using namespace std; vector solution(vector record) { //map, vector unordered_map map; vector user; vector answer; for(int i=0; i> state >> id >> name; if(state != "Change"){ vec.push_back(state); vec.push_back(id); user.push_back(vec); } if(state != "Leave") map[id] = name; } for(auto a : user){ string s; s += map[a[1]] + "님이 "; a[0] == "Enter" ? s+= .. [프로그래머스] 문자열 압축 / substr 문제 풀이 1 #include #include using namespace std; int solution(string s) { int answer = s.length(); int len = 0, count = 1; string a, before; for(int i=1; i 1){ string count_s = to_string(count); len += count_s.length(); count = 1; } if(answer > len) answer = len; } return answer; } 정답만을 구하는 것이 목적이었기 때문에(int 값) 정답인 문자열을 구할 수 없었다. 풀이 2 #include #include using namespace std; int solution(string s) { .. [프로그래머스] GROUP BY - 입양 시각 구하기(1) / 통계 유형별 조회, BETWEEN 문제 풀이 SELECT HOUR(DATETIME) AS HOUR, COUNT(DATETIME) AS COUNT FROM ANIMAL_OUTS WHERE HOUR(DATETIME) BETWEEN '9' AND '19' GROUP BY HOUR(DATETIME) ORDER BY HOUR(DATETIME) ASC HOUR -시간을 알려주는 문법 (0 ~ 23) select hour('12:30:05'); 결과 : 10 BETWEEN... AND... -출력하고 싶은 데이터의 범위를 정하는 문법 SELECT * FROM [테이블명] WHERE [칼럼명] BETWEEN [조건 1] AND [조건 2] https://jang8584.tistory.com/7 [mysql]날짜 관련 함수 모음 [mysql-함수]날짜 .. [프로그래머스] 하샤드 수 문제 풀이 #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는 용도에 따라 다양한 형태의 오버 로딩이 존재한다.. 이전 1 ··· 49 50 51 52 53 54 55 ··· 61 다음