반응형

C++ 351

백준 9507번 Generations of Tribbles C++

리뷰이게 실버문제라니! DP로 피보나치 수열을 구하는 것과 동일한 방식 문제 풀이피보나치 수열을 구할 68크기의 벡터를 생성해 준다.0, 1, 2, 3에 인덱스에 해당하는 값을 미리 할당해 주고, 4부터 68까지는 for문으로 할당해 준다.각 테스트 케이스 마다 입력 받은 값을 인덱스로 하는 값을 출력해 준다. 참고 사항나중에 값이 매우 커지므로 int형식으로는 오버플로우가 될 것이다.  정답 코드#include #include using namespace std;int main() { vector fibo(68, 1); fibo[1] = 1, fibo[2] = 2, fibo[3] = 4; for (int i = 4; i > t; while (t--) { int c; cin >> c; cout

백준 10769번 행복한지 슬픈지 C++

리뷰find를 사용하여 문제를 풀면 된다. 문제 풀이getline을 통해 한줄 전체를 문자열 s로 받아준다.s를 돌며 :-)를 찾으면 cnt1을 1만큼 올려주고 발견 위치 다음부터 다시 탐색한다. 없을 경우 break마찬가지로 :-( 또한 찾아준 뒤 cnt2를 올려준다.cnt1와 cnt2를 비교하여 적절한 문자열을 출력해 주면 된다. 참고 사항없음  정답 코드#include #include using namespace std;int main() { int cnt1 = 0, cnt2 = 0; string s; getline(cin, s); int c = 0; while (1) { int a = s.find(":-)", c); if (a == -1) break; cnt1++; c = a + 1; } ..

그리디 알고리즘 Greedy Algorithm C++

개요문제를 풀이할 기준을 세운다.Greedy Choice Property : 세운 기준이 변경되면 안된다.Optimal Substructure(부분 최적해) : 수립한 기준을 검증할 수 있어야 한다.부분 최적해를 통해 앞서 계산된 결과를 다른 부분에서도 그대로 가져가서 쓸 수 있다면 그리디 알고리즘이 성립된다.그리디 알고리즘은 수학적으로 검증이 가능하다. 예제1. ATM 문제ATM이 1대가 있을때 A, B, C 인원 세명이 ATM을 이용하려고 한다. ATM 이용 시간은 각자 A = 30분, B = 20분, C = 5분 이라고 가정할때 이때 총 걸리는 대기 시간은?1. 문제 인식 : 대기 인원수는 ATM을 사용할 수록 줄어들고, 대기 시간은 점점 늘어난다.2. 기준 수립 : ATM 이용 시간이 적은 순서대..

정렬 Sort C++

개요정렬은 배열이나 벡터의 인자들을 내가 원하는 대로 순서를 재배치 할 수 있다.C++에서는 algorithm 클래스를 include 해주어야 사용 가능하고 파이썬의 경우에는 내장 함수로 사용 가능하다.lambda등과 결합하면 꽤나 큰 효과를 볼 수 있다. 예제1. 배열의 정렬코드#include #include using namespace std;int arr[11] = { 1, 33, 77, 13, 21, 67, 91, 21, 17, 93, 99 };int main() { sort(arr, arr + 11); for (int i = 0; i  출력1 13 17 21 21 33 67 77 91 93 99 2. 벡터의 정렬코드#include #include #include using namespace st..

문자열 String C++

개요C++에서는 문자 배열을 사용하지 않고 string 메서드를 include하여 사용할 수 있다.해당 기능을 사용한다면 문자열 찾기, 문자열 잘라내기 등에 대한 기능을 사용할 수 있으며, 굳이 기능을 사용하지 않더라도 string을 사용 가능하다. 예제1. 복사 및 비교여타 다른 변수와 동일하게 특정 변수의 값을 다른 변수에 대입하여 복사할 수 있다. 코드 string a = "AAA"; string b = ""; b = a; if (b == a) cout  출력AAA : AAA 2. 문자열 더하기"AAA" + "BBB" = "AAABBB" 이다. 코드 string a = "AAA"; string b = ""; b = a; string ans = a + b; ..

벡터 Vector C++

개요배열과 달리 동적 할당이 가능하도록 지원하는 클래스(STL), 배열과 별개로 활용 방법이 무궁무진 하다. 벡터의 기본형과 자주 사용하는 메서드#include #include using namespace std;vector v; // vector 이름;int main() { // 벡터의 뒤에 값을 추가한다. v.push_back(10); // 벡터의 가장 뒤에 있는 값을 삭제한다. v.pop_back(); // 벡터의 크기를 재할당 한다. v.resize(10); // 벡터의 모든 요소와 크기를 지운다. v.clear();}  장점배열과 달리 동적으로 메모리를 제어할 수 있다.다양한 기능의 메서드 지원으로 원하는 바를 구현하기에 편리하다.파이썬의 리스트와 유사한 점이 있다.예시 코드 1차원 벡터 초기화..

백준 5347번 LCM C++

리뷰변수 형식 지키기가 너무나 어렵다... 휴 문제 풀이테스트 케이스의 개수 n과 정수 a, b에 값을 받아주고 lcm 함수에 a, b를 인자로 넣어준다.a, b중 작은 값을 gcd로 초기화 하고, a를 gcd로 나눈 값과 b를 gcd로 나눈 값이 모두 0이 될때까지 gcd를 빼준다.while루프를 벗어났을때 a, b중 큰 값과 a와 b를 변경된 gcd로 나눈 값 중 작은 값을 곱해준 뒤 리턴해 준다.lcm 함수로부터 리턴받은 값을 출력해 준다. 참고 사항두 수의 범위가 1,000,000 미만이므로 int 형식으로는 오버플로우가 난다, 리턴 시 long long 형식으로 바꿔준다.  정답 코드#include using namespace std;long long lcm(int a, int b) { int ..

백준 1940번 주몽 C++ 투 포인터

리뷰투포인터를 통해 해결한 문제 문제 풀이n, m을 입력받고 정수형 벡터를 n크기로 초기화 해준 후 각 인덱스에 값을 받아와 준다.벡터를 정렬해 주고 투포인터에 벡터와 n, m값을 인자로 전해준다. (전역 변수를 사용해도 된다.)왼쪽의 시작 인덱스는 0, 오른쪽의 시작 인덱스는 n-1로 왼쪽이 오른쪽보다 커지기 전까지 루프를 실행한다.왼쪽과 오른쪽 인덱스의 값을 더해주고 m과 같다면 개수를 1개 찾은 것이다, 왼쪽 인덱스 + 1 오른쪽 인덱스 - 1만약 값이 더 클경우 오른쪽 인덱스를 -1 해주고, 값이 더 작을경우 왼쪽을 +1 해주면 된다.마지막으로 찾은 개수를 리턴해 준 뒤 출력해 준다. 참고 사항전역 변수를 사용하면 더 편리할수도?  정답 코드#include #include #include usin..

백준 1159번 농구 경기 C++

리뷰map을 사용하였고, map을 순회하기 위해 auto 형식을 처음으로 사용해 보았다. 문제 풀이선수의 이름을 문자열로 받아와 주고 문자열의 첫번째를 key로 하는 map의 value를 1씩 올려주었다.map 전체를 순회하며 value 값이 5 이상일 경우 ans문자열에 key를 추가해 주었다.만약 ans가 비었다면 PREDAJA를 출력, 아닐 경우 ans를 출력해 주면 된다. 참고 사항없음  정답 코드#include #include #include using namespace std;int main() { map dic; int n; cin >> n; while (n--) { string s; cin >> s; if (dic[s[0]]) dic[s[0]]++; else dic[s[0]] = 1..

백준 1076번 저항 C++

리뷰unordered_map과 pow를 통해 푼 문제, C++로 문제를 풀며 처음으로 int값을 초과하는 문제였다, 문자열로 풀어도 괜찮았을듯 문제 풀이unordered_map을 통해 각 문자열에 해당하는 값을 짝지어 준다.입력값을 각각 문자열로 받은 후 각 key 맞는 value를 가져와 정수형으로 치환해 준다.첫번째 수를 10의 자리로, 두번째 수를 1의 자리로 받은 후 세번째 수를 10의 제곱으로 곱해준다.완성된 수를 출력해 준다. 참고 사항int형식으로 변수를 선언하여 틀렸습니다가 노출되었다 충분히 큰 수를 받을 수 있도록 long long 변수를 사용해 주자  정답 코드#include #include #include using namespace std;int main() { unordered_m..

728x90
반응형