백준108 [백준 10808번 / C++] 알파벳 개수 쉬운 문제다 알파벳을 의미하는 26개의 배열을 생성하여 문자열이 입력되면 해당 사이즈만큼 돌아보면서 특정 알파벳을 의미하는 배열의 count 값을 올려준다. 여기서 라는 것은 아스키코드로 나타낼수 있다. 만약 s[0] 은 알파벳 a를 뜻하는 거라면 소문자 a 는 아스키 코드값으로 97이다 이 문자에 같은 아스키코드를 갖는 'a' 를 빼주면 값은 0이 된다. 즉, 알파벳을 의미하는 배열 인덱스 0을 가리키게 된다. 만약 s[0] 이 'c' 이고 해당 문자에 -'a' 를 해준다면 99 - 97 이 되어서 값이 2가 된다. #include #include using namespace std; int a[26]; int main() { string s; cin >> s; for (int i = 0; i < s... 백준/구현 2022. 1. 17. [백준 2309번/ C++] 일곱 난쟁이 모든 경우의 수 정렬 벡터를 정렬할 때 정렬 될 수 있는 모든 경우의 수를 물어보는 문제가 있다. 이러한 경우 해당 함수를 사용한다. 즉, A B C 를 정렬하고 싶은데 모든 경우를 정렬하면, ABC ACB BAC BCA CAB CBA 순으로 정 baebalja.tistory.com 이 문제는 next_permutaion 함수를 사용하면 된다. 해당 함수를 모른다면 위의 링크에 가서 한번 숙지하고 오자. 9명의 난쟁이 중에 일곱 난쟁이의 키의 합이 100이 됐을 때 난쟁이의 키를 오름차순으로 출력하면 된다. 즉, next_permutaion 함수를 사용해서 모든 경우의 수를 살펴보면서 첫 인덱스부터 7번째 인덱스까지 합산하여 그 값이 100이면 멈추고 이에 해당하는 난쟁이의 키를 순서대로 출력하면 되는 .. 백준/구현 2022. 1. 17. [백준 2109번 / C++] 순회강연 처음에 이 문제를 접근할 때 이런식으로 접근 하였다. #include #include #include using namespace std; int check[10001]; int sum; bool cmp(pairp1, pairp2) { return p1.first > p2.first; } int main() { int n; cin >> n; int p, d; vector v; for (int i = 0; i > p >> d; v.push_back({ p,d }); } sort(v.begin(), v.end(), cmp); //p값의 내림차순 for (int i = 0; i < n; i++) { int index = v[i].second; if (check[index] == .. 백준/그리디 2022. 1. 14. [백준 2589번 / C++] 보물섬 완전 탐색 문제이다. 먼저 map이 [3][4] 배열로 주어진다면 {0,0} ~ {2,3} 까지 총 12개의 좌표값을 하나하나 현위치로 판단해서 갈 수 있는 최대 거리를 구하라는 것이다. 즉, bfs() 를 활용해서 현위치에서 바다가 아닌 육지로 갈 수 있는 거리를 계속해서 갱신하고 최댓값을 구해나가는 것이다. map[3][4]가 주어진다고 가정을 하고, "W = 0 , L = 1" 라고 보기 쉽게 숫자로 표현하였다. 그리고 map 크기만큼 check 라는 배열을 생성 해준다. 먼저 {0,3} 지점을 먼저 살펴보자. 다음 그림을 보면 현위치에서 갈 수 있는 길이 있을 때마다 숫자를 갱신해나간다. 모든 맵을 다 살펴보고 나면 최댓값이 3이라는 것을 알 수 있다. 그렇기 때문에 result라는 표에서 {0,.. 백준/완전 탐색 2022. 1. 14. [백준 2468번 / C++] 안전 영역 DFS를 활용한 문제이다. N은 2이상 100이하이며 각 지역의 높이는 1이상 100이하 인것을 알아두자. 먼저 지역의 높이를 나타내는 map을 입력 받고 check라는 배열도 h값이 변할 때마다 생성해주자. 각 지역은 1부터 100이하이니 비가 차오른 높이도 그렇게 생각할 수 있지만 비가 아예 안 올 경우도 생각 해야한다. 그러니, h의 범위는 0부터 100이라는 것을 주의하자. 해당 그림을 보면서 어떻게 구현을 하였는지 확인하고 코드 주석을 보면서 이해해보자. #include #include #include using namespace std; int map[100][100], check[100][100], n; int answer = INT_MIN; int dx[4] = { 0,0,1,-1 }; i.. 백준/DFS BFS 2022. 1. 14. [백준 2559번 / C++ ] 수열 누적합 문제이다. start 포인트와 end 포인트를 둬서 투포인트로 풀어도 된다. 하지만 이 방법은 여기서 최적의 풀이법은 아니다. #include #include #include #include using namespace std; int answer = INT_MIN; int main() { int start, end, n, k, sum = 0; cin >> n >> k; start = 0; end = k - 1; vector v(n); for (int i = 0; i > v[i]; for (int i = 0; i > k; for (int i = 1; i > temp; sum[i] = sum[i - 1] + temp; } for (int i = k; i 백준/구현 2022. 1. 14. [백준 19942번/ C++] 다이어트 해당 문제는 map과 비트마스킹을 이용해서 풀면된다. 조건에서 N은 3이상 15이하라고 하였으니 N이 5일때를 가정하고 한번 풀어보자. N이 5라는 것은 데이터가 들어있는 표의 개수가 총 5개라는 뜻이다. 해당 문제는 각 표의 데이터값을 하나하나 다 더해서 조건식을 만족하는지 체크를 하는것이다. 그렇기 때문에 비트마스킹을 활용하는것이다. N이 5라면 비트는 5개지만 나타낼수 있는 수는 총 2^5개가 만들어진다. 예를 들어 00001, 00010, 00011, ... , 11110, 11111 이런것이 만들어질텐데 비트가 1인것은 각 표의 튜플(행)을 보라는 뜻이다. 즉, 00101 이라면 첫번째 데이터값과 세번째 데이터값들을 더해서 각 영양분이 최소 영양성분이 되냐를 따지면 된다. 만약 11111 이라면.. 백준/비트마스킹 2022. 1. 13. [백준 9996번/ C++] 한국이 그리울 땐 서버에 접속하지 문자열 안에 문자/문자열 찾기 find 코딩테스트에서 정말 많이 쓰이는 함수이다. 어떠한 문자 또는 문자열을 찾기 위해서 for문을 돌려가며 체크를 무식하게 해왔던 기억이 있다. 그렇게 하지말고 find 함수를 사용하여 쉽게 check baebalja.tistory.com 인덱스로 문자열 자르기 문자열을 처리하기 위해서 정말 많이 쓰이는 함수이다. 이 함수는 어떠한 문자열의 특정 인덱스에서 어떠한 인덱스까지 사이의 새로운 문자열을 만들때 보통 사용된다. 예를 들어, "abcdefe" 라는 baebalja.tistory.com 해당 문제를 풀기 위해서 find() 함수와 substr() 함수를 알아야한다. 해당 함수를 사용할 줄 모른다면 메뉴에서 "C++ 코테 문법 문자열" 카테고리에서 참고해야 한다. 먼.. 백준/구현 2022. 1. 13. 이전 1 ··· 8 9 10 11 다음 반응형