*개인적인 공부 내용을 기록하는 용도로 작성한 글 이기에 잘못된 내용을 포함하고 있을 수 있습니다. #1 Return By Value #2 Return By Address / Reference #1 Return By Value getValue 함수는 값(Value)을 반환하는 간단한 Return-By-Value 함수입니다. Return-By-Value 함수는 복사 과정이 많이 일어나서 비효율적이라는 단점이 있습니다. 물론 아래 코드처럼 간단한 케이스는 상관 없지만 배열이나 구조체 등 데이터가 많은 자료형을 반환할 때는 문제가 발생할 수 있습니다. #include using namespace std; // return by value int getValue(int x) { int value = x * 2;..
#INFO 난이도 : SILVER5 알고리즘 유형 : BruteForce 출처 : 1018번: 체스판 다시 칠하기 (acmicpc.net) 1018번: 체스판 다시 칠하기 첫째 줄에 N과 M이 주어진다. N과 M은 8보다 크거나 같고, 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 보드의 각 행의 상태가 주어진다. B는 검은색이며, W는 흰색이다. www.acmicpc.net #SOLVE 모든 경우의 수를 대입하는 브루트포스 알고리즘을 이용해 문제를 풀이하였습니다. 우선, 맨 앞이 검정으로 시작하는 8 x 8 타일 black_board와 하얀색으로 시작하는 8 x 8 타일 white_board 를 string 배열을 이용해 선언해 줍니다. string black_board[8] = { "B..
*개인적인 공부내용을 기록하는 용도로 작성한 글 이기에 잘못된 내용을 포함하고 있을 수 있습니다. const 키워드는 변수의 값이 변경되지 않기를 원하는 경우 변수를 상수화 시키는 용도로 사용하곤 합니다. int a = 10; const int a = 10; // 상수화 const는 변수 뿐 만 아니라 포인터 혹은 참조자(&)에도 사용이 가능합니다. 이번 포스팅에서는 const를 참조자(&)에 사용한 예시와 const와 참조자를 함께 사용 시 얻을 수 있는 이점에 대해 정리해 보도록 하겠습니다. 참조자에 100과 같은 값(리터럴)을 대입하려고 하면 에러가 발생합니다. 그 이유는 어찌보면 당연한데 참조자는 변수의 메모리 주소를 저장하는 문법인데 리터럴 값을 대입하려고 하니 오류가 발생하는 것 입니다. in..
* 개인적인 공부 내용을 기록하는 용도로 작성한 글 이기에 잘못된 내용을 포함하고 있을 수 있습니다. #1 값에 의한 전달 Call-By-Value #2 참조에 의한 전달 Call-By-Reference #1 값에 의한 전달 Call-By-Value Call-By-Value 방식은 인자로 넘기는 값을 "복사"하여 함수에 넘겨주는 방식입니다. 즉, 값의 복사에 의한 함수 호출을 의미합니다. 다음 코드는 main() 함수에서 doSomething 함수로 x의 값 5를 전달해 출력하는 예제입니다. 유의해야 할 점은 x가 직접 전달되는 것이 아닌 x의 값 "5"만이 전달되는 것으로 doSomething 함수의 파라미터 x와 main() 함수의 x는 서로 다른 메모리에 할당되어 있습니다. 따라서, 각 함수에서 x..
#INFO 난이도 : SILVER3 알고리즘 유형 : DP 출처 : 1904번: 01타일 (acmicpc.net) 1904번: 01타일 지원이에게 2진 수열을 가르쳐 주기 위해, 지원이 아버지는 그에게 타일들을 선물해주셨다. 그리고 이 각각의 타일들은 0 또는 1이 쓰여 있는 낱장의 타일들이다. 어느 날 짓궂은 동주가 지원이 www.acmicpc.net #SOLVE DP를 이용해 문제를 풀이하였습니다. 문제의 핵심은 타일의 마지막 수가 0으로 끝나는지 1로 끝나는지에 따라 케이스를 구분해 점화식을 세우는 것입니다. 마지막 수가 1로 끝나는 타일들은 DP[i-1] 값의 타일들에서 오른쪽에 1타일을 추가한 것이고, 마지막 수가 0으로 끝나는 타일들은 DP[i-2] 값의 타일들에서 오른쪽에 00타일을 추가한 ..