일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 백준 K보다 큰 구간
- c++ split
- 관리형 학원
- 백준 2309번 일곱 난쟁이
- 운영체제
- C++ 문자열
- 고정 소수점
- C# 병합정렬
- 월곡중 학원
- DFS
- 백준 1049번 기타줄
- 월곡중학교 학원추천
- 서울사대부고 학원
- 백준 토마토
- 월곡동 학원추천
- 백준 9375번 패션왕 신해빈
- 백준 한국이 그리울 땐 서버에 접속하지
- 백준 14246번 K보다 큰 구간
- 상월곡동 학원
- 백준 10709
- 백준 dfs
- 월곡역 학원
- 성북구 학원
- 백준 1049번
- 백준 14246번
- 백준 패션왕 신해빈
- OS
- c++ 조합
- 상월곡역 학원
- C++ 9996
- Today
- Total
목록알고리즘 (76)
키베이루's diary
sort, unique, erase를 사용해서 중복을 제거할 수 있다. unique : 인접한 중복된 요소가 있을 경우, 뒤에서 부터 제거 하고 나머지 요소의 첫번째 인덱스를 반환한다. ex) { 1, 1, 2, 2, 3, 3 } -> { 1, 2, 3, 2, 3, 3 }, index = 3 반환 (3부터 중복이 없기 때문) int main() { vector v{ 1,3,2,2,1,3 }; sort(v.begin(), v.end()); // 인접한 요소에서 중복을 제거하기 때문에 정렬 해야함 for (auto i : v) { cout
1. 최대 공약수 int gcd(int a, int b) { int n; while (b != 0) { n = a % b; a = b; b = n; } return a; } 2. 최소 공배수 int lcm(int a, int b) { return a * b / gcd(a, b); } ex) https://www.acmicpc.net/problem/1735 1735번: 분수 합 첫째 줄과 둘째 줄에, 각 분수의 분자와 분모를 뜻하는 두 개의 자연수가 순서대로 주어진다. 입력되는 네 자연수는 모두 30,000 이하이다. www.acmicpc.net #include #include #include #include #include #include using namespace std; int gcd(int a, ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/xw9aQ/btrWqIceX8a/fWpkK9ntKLnpKPkIYHpJWk/img.png)
1) 문제설명 2) 아이디어 입력받은 문자들중 "."은 -1로 "c"는 0으로 다시 배열에 할당하여 0이 니왔을 때 순차적으로 숫자를 증가시키는 단순한 구현 문제이다. 3) 코드 // Algo.cpp : 이 파일에는 'main' 함수가 포함됩니다. 거기서 프로그램 실행이 시작되고 종료됩니다. // #include #include #include #include using namespace std; int h, w; char str[101][101]; int arr[101][101]; int cnt = 1; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cin >> h >> w; for (int i = 0; i < h; i++) { for (..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bQiCLn/btrV6C3I9ix/P3gBTP4Cb2D3nfopdF6liK/img.png)
1) 문제설명 2) 아이디어 처음 M,N 행렬을 0으로 초기화 한 뒤 입력받은 위치(X1 X2 ~ Y1 Y2)는 1로 변경해 주었다. 이후 BFS를 실행하여 영역크기는 각각 vector에 저장하여 오름차순으로 출력하였고 영역의 개수는 따로 카운트 하였다. 3) 코드 #define _CRT_SECURE_NO_WARNINGS #include #include #include #include #include #include #include #include #include using namespace std; queue q; int arr[101][101]; int range[101][101]; int result = 0; int cnt = 0; int n, m, k; int x1, y11, x2, y2; voi..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/nIHFX/btrUV3HmCy7/6kxBkykbzQXvTk43rPOsKk/img.png)
1) 문제설명 2) 아이디어 앞에있는 의상의 이름은 고려할 필요없이 뒤에있는 의상의 종류만 고려하면 된다. -> MAP을 사용 첫번째 예제의 경우 (hat), (turban), (sunglasses), (hat,sunglasses), (turban, sunglasses)으로 5개 headgear, headgear, X(아무것도 입지 않음) eyewear, X 로 경우의수를 계산하여 3 * 2 = 6에 아무것도 입지않았을때 (X,X)를 빼버리면 된다. 6 - 1 = 5 두번째 예제의 경우 (mask), (sunglasses), (makeup)으로 3개 FACE, FACE, FACE, X X 4 * 1 = 4에 (X,X)일때를 빼면 4 - 1 = 3 3) 코드 #define _CRT_SECURE_NO_WAR..
Map Map은 고유한 key를 기반으로 key와 value 쌍으로 이루어진 컨테이너이다. (key-value) *레드 - 블랙 트리로 구현되어있어서 삽입, 삭제, 수정, 탐색이 O(logN)의 시간복잡도를 가진다. Map은 자료를 저장할 때 내부에서 자동으로 오름차순으로 정렬하고 고유한 key 값을 갖기 때문에 하나의 key 값에 중복된 값이 들어갈 수 없으며 대괄호 연산자 []로 해당 키로 직접 참조가 가능하다. C++ 에서 Map 사용 #include map 이름 #include map mp; *레드-블랙트리 : 균형 이진 검색 트리이며, 삽입, 삭제, 수정, 탐색에 O(logN)의 시간 복잡도가 보장된다. insert({key,value}) : map에 key와 value를 집어 넣는다. stri..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cVPX5f/btrUOPb8qzz/15LFA3t5DxkqbvHXUvg6MK/img.png)
1) 문제설명 https://www.acmicpc.net/problem/9996 9996번: 한국이 그리울 땐 서버에 접속하지 총 N개의 줄에 걸쳐서, 입력으로 주어진 i번째 파일 이름이 패턴과 일치하면 "DA", 일치하지 않으면 "NE"를 출력한다. 참고로, "DA"는 크로아티어어로 "YES"를, "NE"는 "NO"를 의미한다. www.acmicpc.net 2) 아이디어 문자열을 분리하는 split을 사용하여 *을 기준으로 앞부분을 prefix, *의 뒷부분을 suffix로 나누어 prefix가 입력받는 문자열(result)의 앞 부분에 위치하고 suffix가 입력받는 문자열(result)의 뒷부분에 위치한다면 DA를 출력 그렇지 않다면 NE를 출력하였다. ★ prefix와 suffix로 나눈 부분이 ..