'공부'에 해당되는 글 131건

  1. 2018.03.20 xor을 이용한 스왑
  2. 2017.11.05 [엑셀] 반올림/올림/내림 (ROUND)
  3. 2017.11.01 [엑셀] 특수 합계 계산(SUMPRODUCT)
2018. 3. 20. 02:30
728x90

변수와 변수의 값을 바꿀 때 보통은 아래와 같이 한다.

void swap(int& a, int& b)
{
	if (a != b)
	{
		int temp = a;
		a = b;
		b = temp;
	{
}


XOR 연산자를 이용해서 연산할 경우에는 temp 변수를 생성하지 않고 할 수 있다. 방법은 아래와 같다.

void swap(int& a, int& b)
{
	if(a != b)
	{
		a = a ^ b
		b = b ^ a
		a = a ^ b
	}
}

XOR 연산은 교환법칙과 결합법칙이 성립한다.

이 법칙들을 이용해서 계산 과정을 살펴보면 아래와 같다.

c = a ^ b

d = b ^ c = b ^ (a ^ b) = b ^ a ^ b = a ^ b ^ b = a ^ 0 = a

e = c ^ d = (a ^ b) ^ a = a ^ b ^ a = a ^ a ^ b = 0 ^ b = b


따라서 XOR 연산을 위와 같이 진행하면 두 값은 swap 된다.

728x90
Posted by 아야카
2017. 11. 5. 22:58
728x90

ROUND(값, 자리 수) - 지정한 자리수에서 반올림한다.

ROUNDUP(값, 자리 수) - 지정한 자리수에서 올림한다.

ROUNDDOWN(값, 자리 수) - 지정한 자리수에서 내림한다.


※ 자리 수는 0으로 할 경우 정수로 출력되며, , 양수는 소수 자리에서, 음수는 정수 자리에서 처리를 한다.


예시)

=ROUND(12.25, 1) >> 12.3

=ROUND(12.25, 0) >> 12

=ROUND(12.25, -1) >> 10

728x90

'공부 > 기타' 카테고리의 다른 글

자료구조 2장. 연습문제 05  (0) 2018.07.25
자료구조 2장. 연습문제 04  (0) 2018.07.25
자료구조 2장. 연습문제 01  (0) 2018.07.25
xor을 이용한 스왑  (0) 2018.03.20
[엑셀] 특수 합계 계산(SUMPRODUCT)  (0) 2017.11.01
Posted by 아야카
2017. 11. 1. 00:48
728x90

sumproduct(배열1, 배열2, 배열3...)

각 배열에 대응하는 순서끼리 곱한 것을 합한다.
예를 들어 sumproduct(A1:A3, B1:B3, C1:C3)로 설정할 경우 각 배열은 아래와 같다.
배열1 - A1, A2, A3
배열2 - B1, B2, B3
배열3 - C1, C2, C2
이 때 sumproduct의 계산은 ((A1*B1*C1)+(A2*B2*C2)+(A3*B3*C3))이 된다.
범위가 하나라도 다른 경우가 있을 경우 곱하기를 진행하는 과정에서 에러가 나와 #VALUE가 뜬다.
따라서 각 배열의 크기와 형태가 모두 동일해야 한다.

단순히 이런 형태이기만 해서는 활용이 어렵지만 배열1의 위치에 범위 조건을 걸어주는 방식을 응용하면 좀 더 활용도를 높일 수 있다.

오른쪽 자산에 있는 값들은 왼쪽에 있는 각 브랜드의 가격*수량의 총합이다.
A의 자산에는 sumproduct((B3:B8=F3)*1, C3:C8, D3:D8)이 작성되어 있다.
(B3:B8=F3)*1을 이용해서 범위를 설정하고, 나머지 배열 인자들은 조건문이 설정한 범위를 따라간다.
조건문은 *로 연결하는 것으로 여러개를 설정할 수 있다.
sumproduct((B3:B8=F3)*(C3:C8>100)*1, C3:C8, D3:D8)으로 설정하면
브랜드가 A이면서 가격이 100보다 비싼 곳을 범위로 설정하여 결과가 나온다.
이와 같은 형태로 특정 조건에 해당하는 범위의 합계를 구할 수 있다.

728x90

'공부 > 기타' 카테고리의 다른 글

자료구조 2장. 연습문제 05  (0) 2018.07.25
자료구조 2장. 연습문제 04  (0) 2018.07.25
자료구조 2장. 연습문제 01  (0) 2018.07.25
xor을 이용한 스왑  (0) 2018.03.20
[엑셀] 반올림/올림/내림 (ROUND)  (0) 2017.11.05
Posted by 아야카