23.03.21 Day36

오윤범·2023년 3월 21일
0
post-custom-banner

C++ 프로그래밍

  • C++ 기초 프로그래밍(입출력 및 간단한 연산, 조건 반복문)

#include<iostream>
using namespace std;
int main(void)
{
	int val1, val2;
	int result = 0;
	cout << "숫자 두개 입력>>";
	cin >> val1 >> val2;
	if (val1 < val2)
	{
		for (int i= val1+1; i < val2; i++) // 사이 숫자 합이기에 for문 시작이 val1+1 로 시작
		{
			result += i;
		}
	}
	else
	{
		for (int i = val2+1; i < val1; i++)
		{
			result += i;
		}
	}
	cout << val1 << "과" << val2 << "사이 숫자들의 합: " << result;
}
  • Array

#include<iostream>
using namespace std;
int main()
{
	char ch[6];
	ch[0] = 'h';
	ch[1] = 'o';
	ch[2] = 'n';
	ch[3] = 'g';
	ch[4] = 'a';
	ch[5] = '\0';
	for (int i = 0; i < 5; i++)
	{
		printf("%c", ch[i]);
	}
	cout << endl;
	printf("%s", ch); // %s로 출력하고 싶으면 반드시 끝에 \0(null) 이 있어야함
	cout << endl;
	printf("배열이름 ch : %p", ch); // %p:포인터 출력(주소)
	cout << endl;
	printf("배열주소 ch : %p", &ch);
	// 배열이름,배열주소 출력해보면 똑같은데 이 말은 배열 이름도 주소란뜻
}

1) char ch[6]="honga" 은 honga가 '문자열'의 형태로 ch에 저장됨
2) ch는 ch[0]...ch[5]에 h o n g a \0 의 형태로 저장됨
3) 문자열의 마지막에는 항상 \0이 같이 저장됨
4) %s로 불러오면 문자열의 마지막 즉 \0을 만날때까지 출력

  • 함수 오버로딩

#include<iostream>
using namespace std;
void swap(int* a, int* b)
{
	int temp = *a;
	*a = *b;
	*b = temp;
}
void swap(char* a, char* b)
{
	char temp = *a;
	*a = *b;
	*b = temp;
}
void swap(double* a, double* b)
{
	double temp = *a;
	*a = *b;
	*b = temp;
}
int main(void)
{
	int num1 = 20, num2 = 30;
	swap(&num1, &num2);
	cout << num1 << ' ' << num2 << endl;

	char ch1 = 'A', ch2 = 'Z';
	swap(&ch1, &ch2);
	cout << ch1 << ' ' << ch2 << endl;

	double db11 = 1.111, db12 = 5.555;
	swap(&db11, &db12);
	cout << db11 << ' ' << db12 << endl;
	return 0;
}

  • swap(&num1,&num2) 형태로 호출하면 함수 선언시에 void swap(int a,int b) 형태의 포인터 형태로 선언해주어야함

프로그래머스(백준에서 넘어옴)

  • 분수의 덧셈

import math
def solution(numer1, denom1, numer2, denom2):
    boonmo=denom1*denom2
    boonja=(numer1*denom2)+(numer2*denom1)
    gcd_value=math.gcd(boonmo,boonja)

    answer=[boonja//gcd_value,boonmo//gcd_value]
    return answer

0) 실제로 손으로 써서 분수 계산을 해보고 접근하면 더 쉽게 접근 가능할듯
1) boonmo 저장 / boonja 저장
2) math 모듈의 gcd 함수를 이용하여 최대공약수를 구한 후
3) 분모와 분자 계산을 최대공약수로 나눠주게 되면 기약분수 출력

  • 배열 두배 만들기

def solution(numbers):
    answer = []
    for i in range(len(numbers)):
        answer.append(numbers[i]*2)
    return answer

solution([1,2,3,4,5])
post-custom-banner

0개의 댓글