* 개인적인 공부 내용을 기록하는 용도로 작성한 글 이기에 잘못된 내용을 포함하고 있을 수 있습니다. #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타일을 추가한 ..
#INFO 난이도 : SILVER3 문제유형 : DP 출처 : 9461번: 파도반 수열 (acmicpc.net) 9461번: 파도반 수열 오른쪽 그림과 같이 삼각형이 나선 모양으로 놓여져 있다. 첫 삼각형은 정삼각형으로 변의 길이는 1이다. 그 다음에는 다음과 같은 과정으로 정삼각형을 계속 추가한다. 나선에서 가장 긴 변의 www.acmicpc.net #SOLVE 규칙을 찾아내 점화식으로 표현하면 되는 간단한 DP 문제 였습니다. DP[1] ~ DP[10] 까지의 값은 직접 초기화해 주었고, DP[11] (N>=11) 부터는 점화식으로 표현했습니다. 단, 조심해야할 부분이 있는데, dp 배열의 자료형을 long long 형으로 초기화 해 주어야 한다는 것입니다. 피보나치의 특성상 수의 값이 매우 큰 폭으..
#INFO 난이도 : SIVLER4 문제유형 : DataStructure_STACK 출처 : 4949번: 균형잡힌 세상 (acmicpc.net) 4949번: 균형잡힌 세상 하나 또는 여러줄에 걸쳐서 문자열이 주어진다. 각 문자열은 영문 알파벳, 공백, 소괄호("( )") 대괄호("[ ]")등으로 이루어져 있으며, 길이는 100글자보다 작거나 같다. 입력의 종료조건으로 맨 마 www.acmicpc.net #SOLVE 코드에서 중요한 포인트는 다음과 같습니다. 1. bool 타입 flag 변수를 통해 균형잡힌 문자열 인지 판별 2. 오른쪽 괄호가 나왔을 때 스텍이 비어 있는지 확인 3. 문자열 입력이므로 cin이 아닌 getline 함수 사용 우선, 문자열을 입력받을 str 변수를 선언하고, 공백을 포함한 ..
char str[] = "novlog" // 문자열 상수 char *str = "novlog" // 불가능 error const char *str = "novlog" // 가능 C++에서 문자열을 초기화 하는 방식은 여러가지가 존재한다. char str[] = "novlog"; 우선 char str[] = "novlog" 와 같이 문자열 리터럴 상수로 배열을 초기화 가능하다. char *str = "novlog" //x char *str = "novlog" 처럼은 문자열을 초기화 할 수 없다. 그 이유는 어찌보면 당연한데, str이 포인터 이기 때문이다. "novlog"는 주소가 아닌 "문자열 리터럴" 이기에, 포인터로 주소가 아닌 리터럴을 가리킬 수 없는 것이다. const char* str = "no..