큰 문제를 작은 문제로 나누어서 하나씩 설계하여 해결하도록 하는 것이 좋다.
1. To do list 작성
2. 함수로 뺄 수 있는 거 빼기
3. 시뮬레이션 하기
1. 문자열 중 특정 인덱스를 제거하는 방법
설계
제거에 집중하기 보다 그냥 바로 전 인덱스부터 하나씩 앞으로 땡겨주면 된다. 따라서 t를 제거하기 위해 3번 인덱스부터 마지막 인덱스까지 순서대로 앞으로 이동시켰다.
#include <iostream>
using namespace std;
char arr[10];
int leng()
{
for(int i=0; i<9; i++)
{
if(arr[i] == '\0')
{
return i;
}
}
return -1;
}
int main()
{
cin >> arr;
for(int i=2; i<leng(); i++)
arr[i] = arr[i+1];
for(int i=0; i<leng(); i++)
cout << arr[i];
return 0;
}
2. 전체 배열에 각각 7을 더하고 홀수 합 구하기
설계
짝수에 7을 더해야 홀수이므로 짝수인 경우 7을 더하고 sum에 더한다. 홀수인 경우 7만 더해주고 sum에는 더하지 않는다.
#include <iostream>
using namespace std;
int arr[10], sum;
int main()
{
ios::sync_with_stdio(false);
cin.tie(NULL);
for(int i=0; i<10; i++)
{
cin >> arr[i];
if(arr[i] % 2 == 0)
{
arr[i] += 7;
sum += arr[i];
}
else
{
arr[i] += 7;
}
}
for(int i=0; i<10; i++)
cout << arr[i] <<'\n';
cout << sum;
return 0;
}
Visual studio 단축기
f10, f11, ctrl + f10, shift + f5, f9
ctrl + alt + w -> 1
3. 문자열 중간에 문자 추가하기
설계
해당 인덱스부터 마지막 인덱스까지 뒤로 미루고 삽입한다.
미루는 과정에서 마지막 인덱스부터 이동해야 제대로 복사된다. - 앞에서부터 하면 앞의 문자가 계속 복사됨 ex) appleeeeeeeee
#include <iostream>
using namespace std;
char arr[10];
int leng()
{
for(int i=0; i<10; i++)
{
if(arr[i] == '\0')
{
return i;
}
}
return -1;
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(NULL);
cin >> arr;
for(int i = leng(); i>3; i--)
{
arr[i] = arr[i-1];
}
arr[3] = 'Q';
for(int i=0; i<leng()+1; i++)
cout << arr[i];
return 0;
}
4. 배열안에 숫자가 몇개 들어있는지 확인하기
설계
(1) 갯수를 세는 함수를 작성하여 인자로 숫자를 넘겨서 배열을 순차적으로 탐색한다.
(2) 탐색한 배열의 인자와 값이 같다면 cnt를 증가시킨다.
#include <iostream>
using namespace std;
int arr[7] = {4, 2, 1, 1, 1, 2, 4};
void getCount(int num)
{
int cnt = 0;
for(int i=0; i<7; i++)
{
if(num == arr[i])
cnt++;
}
cout << cnt << '\n';
}
int main()
{
int a, b;
cin >> a >> b;
getCount(a);
getCount(b);
return 0;
}
5. 배열안에 target 배열 속 요소가 각각 몇개 들어있는지 확인하기
설계
(1) 갯수를 세는 함수를 작성하여 인자로 target 배열 인자를 넘겨서 순차적으로 탐색한다.
(2) 탐색한 배열의 인자와 값이 같다면 cnt를 증가시킨다.
#include <iostream>
using namespace std;
char vect[8] = "AABTTGA", target[5] = "ATBK";
int alpCount(char alp)
{
int cnt= 0;
for(int i=0; i<7; i++)
{
if(alp == vect[i])
cnt++;
}
return cnt;
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(NULL);
for(int i=0; i<4; i++)
{
cout << target[i] << ":" << alpCount(target[i]) << '\n';
}
return 0;
}
5. 이전 인덱스의 요소와 같은 인덱스의 vect1의 요소를 더해서 vect2에 채우기
설계
(1) 먼저 0번째 인덱스에 값 채우기
(2) vect2에 이전 인덱스의 요소와 같은 인덱스의 vect1 요소 채우기
#include <iostream>
using namespace std;
int vect1[5] = {4, 2, 5, 6, 9};
int main()
{
int vect2[5];
vect2[0] = vect1[0];
cout << vect2[0] << ' ';
for(int i=1; i<5; i++)
{
vect2[i] = vect2[i-1] + vect1[i];
cout << vect2[i] << ' ';
}
return 0;
}
'C++ > 공부 정리' 카테고리의 다른 글
함수 오버로딩, public & private (0) | 2021.10.04 |
---|---|
클래스, 재귀함수 (0) | 2021.10.01 |
Direct offset 배열, 구조체, 2차원 배열에서 패턴찾기 (0) | 2021.10.01 |
문자열 속 패턴 찾기, DAT(Direct Address Table) (0) | 2021.09.19 |
비트배열과 다중 카운트 (0) | 2021.09.16 |