#INFO 난이도 : SILVER3 문제유형 : 브루트포스 알고리즘 출처 : https://www.acmicpc.net/problem/1436 #SOLVE 모든 경우의 수를 탐색하는 브루트포스 방식으로 문제를 풀이하였다. 탐색을 수행할 숫자(cnt)를 to_string 함수를 이용해 문자열 타입으로 바꿔준 뒤, find 함수를 사용해 cnt 내부에 연속된 666이 존재하는지 탐색한다. string str = to_string(cnt); // cnt에서 연속된 666을 탐색한 경우 if(str.find("666") != -1){ a++; } #CODE #include #include // to_string, find using namespace std; void solve(int n){ ios::sync_..
#INFO 난이도 : SILVER2 문제 유형 : 완전탐색 출처 : 10819번: 차이를 최대로 (acmicpc.net) #SOLVE C++ STL 에 정의된 next_permutation 함수를 사용해 만들어질 수 있는 모든 조합의 경우의 수를 구한 뒤 문제에서 주어진 식의 최댓값을 구하는 완전탐색(브루트포스) 방식으로 문제를 풀이하였다. 단, 주의해야할 점은 배열을 조합으로 돌리기 이전에 정렬을 해야 한다는 것이다. 이는 next_permutation 함수의 이전 크기의 순열의 조합은 탐색하지 않는다는 성질 때문에 그렇다. about next_permutation 따라서 의 sort 함수를 이용해 미리 배열(벡터)을 오름차 정렬 해 주었다. int n; cin >> n; vector v(n); for..
#INFO 문제 : 서울에서 김서방 찾기 난이도 : LEVEL1 출처 : 코딩테스트 연습 - 서울에서 김서방 찾기 | 프로그래머스 (programmers.co.kr) 코딩테스트 연습 - 서울에서 김서방 찾기 String형 배열 seoul의 element중 "Kim"의 위치 x를 찾아, "김서방은 x에 있다"는 String을 반환하는 함수, solution을 완성하세요. seoul에 "Kim"은 오직 한 번만 나타나며 잘못된 값이 입력되는 경우는 없습니 programmers.co.kr #SOLVE 의 find함수와 to_string 함수를 이용해 문제를 풀이하였다. find함수를 이용해 vector에서 "Kim" 문자열의 위치를 받아온 뒤, to_string 함수를 이용해 string 타입으로 변환하여 정..
#INFO 난이도 : SILVER5 문제 유형 : 정렬 출처 : 10814번: 나이순 정렬 (acmicpc.net) #SOLVE 문제에서 주어진 정렬 조건은 다음과 같다. 1. 회원들의 나이가 증가하는 순으로 정렬한다. 2. 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬한다. 2번 조건이 없었다면 pair 만으로 해결할 수 있었겠지만, 먼저 가입한 사람의 순서를 파악하기 위해서 C++ STL의 tuple과, sort 정렬함수를 사용했다. vector info; // 1st int : 나이 // 2nd string : 이름 // 3rd int : 가입 순서 tuple은 pair의 확장 버전이라고 생각하면 되는데, 3개 이상의 자료형을 하나로 묶어 사용할 수 있다. 따라서 tuple의 세번째 자료..
#INFO 난이도 : SILVER5 문제 유형 : 정렬 출처 : 11651번: 좌표 정렬하기 2 (acmicpc.net) #SOLVE BOJ 11650 좌표 정렬하기 문제랑 거의 같은 문제이다. sort 함수 내부에서 pair는 first(x좌표)를 기준으로 오름차 정렬 되기 때문에 3번째 인자로 second(y좌표)를 기준으로 오름차 정렬하고, second(y좌표)가 같을 경우 first(x좌표)를 기준으로 오름차 정렬하는 bool형 compare 함수를 정의해 주면 된다. #CODE #include using namespace std; bool compare(const pair& p1, const pair& p2){ if(p1.second == p2.second) // y좌표가 같으면 return p..