안녕하세요. 우당탕탕 개발일지 입니다. 꾸준히 문제 풀기 다시 시작해보겠습니다.
codetree가 마음에 들어 순서대로 풀 것 같습니다. 아자아자 화이팅!
<프로그래밍 연습>
1.함수
2. 재귀함수
3. 정렬
4. 시뮬레이션1,2
5. 완전 탐색 1,2,3
6.케이스별로 나누기
7.Ad-Hoc
__짝수만 2로 나누기__
#include <iostream>
using namespace std;
void func(int *a,int x)
{
a[x]=a[x]/2;
}
int main() {
// 여기에 코드를 작성해주세요.
int N;
cin>>N;
int arr[100];
for(int i=0; i<N; i++)
{
cin>>arr[i];
}
for(int j=0; j<N; j++)
{
if(arr[j]%2==0)
{
func(arr,j);
cout<<arr[j]<<" ";
}
else
{
cout<<arr[j]<<" ";
}
}
return 0;
}
__문자열을 인자로 받는 함수__ !!! 메모리 초과 발생!!!
그냥 함수로 출력하는 코드가 먼저 떠올라 call by reference를 사용하지 않고 코드를 작성 했는데 메모리 초과가 발생하였습니다.
아래에 해결 코드 참조하겠습니다.
/* 메모리 초과가 발생한 코드 */
#include <iostream>
#include<string>
using namespace std;
bool pail(string str)
{
string tmp;
for(int i=0; i<str.size(); i++)
{
tmp[i]=str[str.size()-1-i];
}
int k=0;
for(int j=0; j<str.size(); j++)
{
if(tmp[j]==str[j])
{
k++;
}
}
if(k==int(str.size()))
{
return 1;
}
else
{
return 0;
}
}
int main() {
// 여기에 코드를 작성해주세요.
string s;
cin>>s;
pail(s);
if(pail(s))
{
cout<<"Yes";
}
else{
cout<<"No";
}
return 0;
}
메모리 초과 해결코드_ 문자열 변수 tmp, 정수 k 선언 없이 함수 짜기.
#include <iostream>
#include<string>
using namespace std;
bool pail(string &str)
{
for(int i=0; i<str.size(); i++)
{
if(str[i]!=str[str.size()-1-i])
{
return false;
}
}
return true;
}
int main() {
// 여기에 코드를 작성해주세요.
string s;
cin>>s;
if(pail(s))
{
cout<<"Yes";
}
else{
cout<<"No";
}
return 0;
}
__ 절대값으로 바꿔서 출력 __배열을 함수에 reference로 넘겨줄때 point(*) 사용.
배열에 &기호 썼다가 무한 컴파일 에러의 굴레에 잠시 다녀왔습니다.
#include <iostream>
using namespace std;
int N;
int a[200];
void func(int *a, int n)
{
for(int i=0; i<n; i++)
{
if(a[i]<0)
{
a[i]=a[i]*(-1);
}
else
{
a[i]=a[i]*1;
}
}
}
int main() {
// 여기에 코드를 작성해주세요.
cin>>N;
for(int i=0; i<N; i++)
{
cin>>a[i];
}
func(a, N);
for(int j=0; j<N; j++)
{
cout<<a[j]<<" ";
}
return 0;
}
728x90
'[알고리즘] > CodeTree' 카테고리의 다른 글
[codetree] 프로그래밍 연습_변수의 영역 (0) | 2024.11.14 |
---|---|
[codetree] 프로그래밍 연습_ 값을 반환하지 않는 함수 (예제+실력문제) (0) | 2024.11.06 |
[codetree] 프로그래밍 연습_ 값을 반환하지 않는 함수 (1) | 2024.11.06 |