고딩 7

백준 18870번 c++ 풀이

안녕하세요 오늘은 이진탐색함수 및 정렬함수를 사용하는 문제를 풀어보겠습니다. 전략: 1. 두개의 벡터를 세운다(v, temp) 각각 입력을 받은 벡터, 입력받은 벡터에서 중복값을 삭제시키고 정렬한 벡터 2. 입력을 받는 for문을 세운다. 3. sort함수를 이용하여 sort를 이용하여 temp 벡터를 정렬시켜준다. 4. 정렬된 temp벡터에 erase 함수와 unique함수를 이용하여 중복을 찾아서 지워준다. 5. for문을 작성하고, 그 안에 이진탐색 방법으로 v[i]값들의 위치를 찾는 변수를 선언해서 출력해준다. 코드: #include #include using namespace std; int main(){ ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); ..

BOJ 문제풀이 2021.08.05

백준 1920번 c++ 풀이

안녕하세요 오늘은 이분 탐색을 이용한 문제를 풀어보겠습니다. 이 문제는 쉽지만 이분탐색을 이용하여 풀어야한다는 점이 약간 까다롭다고 할 수 있겠습니다. 바이너리 서치를 구현한 함수를 잘 보면서 이해하시길 바랍니다. 코드: #include using namespace std; vector v; int binarySearch(int low, int high, int target){ if (low > high) return 0; else{ int mid = (low + high) / 2; if (v[mid] == target) return 1; else if (v[mid] > target) return binarySearch(low, mid - 1, target); else return binarySearch..

BOJ 문제풀이 2021.08.04

백준 1259 c++ 풀이

안녕하세요 오늘은 어떠한 수의 대칭성 유무를 파악해보겠습니다. 이 문제는 인풋을 string 타입으로 받는것이 좋습니다. 그후에, 이 인풋이 "0"이라는 문자이면 while 문에서 벗어나고, 그것이 아니면 a라는 인풋의 문자열 길이를 대입하는 변수를 만들어줍니다. 이 문자열의 길이가 짝수인지 홀수인지 판별하여 반복문을 돌려서, 양끝 문자를 비교합니다. 코드: #include using namespace std; int main(){ while(1){ string x; cin>>x; if(x=="0") break; int a = x.length(), count=0; if(a%2==1){ for(int i = 0; i

BOJ 문제풀이 2021.08.04

백준 2920번 c++ 풀이

안녕하세요 오늘은 쉬운 편에 속하는 문제를 풀어보겠습니다. 우선은 계속 8번동안 비교하면서 i번째 때 인풋이랑 i랑 다르면 as를 false로 지정해주고, i번째 반복때, 인풋이랑 9-i랑 다르면 de를 false로 지정해줍니다. 그리고 if문으로 출력합니다. 코드: #include using namespace std; int main(){ bool as = true, de = true; for(int i = 1; i>x; if(i!=x) as=false; if(x!=9-i) de = false; } if(as) cout

BOJ 문제풀이 2021.08.04

백준 2108번 c++ 풀이

안녕하세요 오늘은 특정 알고리즘을 사용하지 않아도 되는 문제를 풀어보겠습니다. 이 문제는 다른것들은 어렵지 않은데 3번째로 출력해야하는 것이 조금 까다롭습니다. 우선은 8001짜리 길이의 배열을 만들어주어, -4000~4000의 숫자들을 관리할 수 있게 하겠습니다. 그런다음 int x로 인풋을 받고 그 값을 4000 더해준 배열의 위치의 값에 1을 더해줍니다. 배열의 원소들 중 최대값(최빈수)을 구해준다음, 그 최대값을 배열에서 검색해서 그 위치를 알아낸다음 두번째 값에다가 4000을 빼준값을 출력하면 됩니다. 코드: #include #include using namespace std; int main(){ int N, sum= 0; cin>>N; vector v; vector res(8001); for..

BOJ 문제풀이 2021.08.04