본문 바로가기

Language/C++10

[C++] call by value 와 call by reference [C++] call by value 와 call by reference function에서 포인터로 전달하거나 값으로 전달할 때 헷갈리지 않도록 정확히 알아놓자! * 포인터로 호출 시void fun(int *a) { *a = 10; }function이 포인터를 이용해 호출하는 경우라면, int main() { int b = 1; fun(&b); // now b = 10; return 0; }값이 1이었던 b가 10으로 변한다. 리턴값이 아니어도 원본 자체가 변하는 것이다. void fun2(int& a) { a = 5; } int main() { int b = 10; fun2(b); // now b = 5; return 0; }이것도 마찬가지이다. 123456789void func(int (*map)[1.. 2019. 3. 7.
[BOJ][C++] 11729 하노이 탑 이동 순서 [BOJ][C++] 11729 하노이 탑 이동 순서 문제 https://www.acmicpc.net/problem/11729 풀이 분할 정복 알고리즘을 이용해서 푸는 문제입니다. 수학적 귀납법을 이용해 증명을 해보면 규칙을 발견할 수 있습니다. 가장 먼저 출력해야 하는 이동 값은 2^n-1 입니다. 처음에 이를 math.h를 이용해서 출력하려 했는데 시간 초과가 떠서 쉬프트 연산자를 활용하여 출력했습니다.어렵다는 생각이 들어서 case 4까지 직접 노트에 적어가면서 탑 이동을 해보았습니다. case 1 case 2 case3 case4 1->3 1->2----------------- 1->3----------------- 2->3 1->3 1->2 3->2----------------- 1->3-----.. 2018. 12. 19.
[BOJ][C++] 1436 영화감독 숌 [BOJ][C++] 1436 영화감독 숌 문제https://www.acmicpc.net/status?user_id=heekim0719&problem_id=1436&from_mine=1풀이 숫자를 올려주면서 6이 연속으로 3개가 있는지 확인하는 방식으로 풀었습니다. 이틀 째 이유도 모른 채 틀리기만 했는데.. 마지막에 배열 출력을 할 때 0이면 아예 출력이 되지 않도록 해서 발생하는 오류가 있었네요ㅠㅠ 하...우선 최대 자릿수를 10으로 정하고 배열에 666을 넣어주었습니다. 그 이후 배열에 666이 있으면 n-- 를 해줍니다. 이렇게 해줄 경우 break 로 for문을 멈추고 n=0이 아닐 경우 up함수를 이용해 값을 올려줍니다. n이 0이 되면 빠져나온 뒤 0일 경우 출력을 안하다가 다른 숫자가 나오면.. 2018. 12. 17.
[C++][BOJ] 1018 체스판 다시 칠하기 [C++][BOJ] 1018 체스판 다시 칠하기 문제https://www.acmicpc.net/problem/1018 풀이 Brute Force를 이용하여 풀었습니다.우선, 8*8 체스판 두 종류를 먼저 만들어 놓은 후 입력받은 체스판 chess[N][M]에서 N-7, M-8 까지 몇 개씩 바꿔야 하는지 비교해봅니다. 이 때, algorithm.h를 활용하여 min값을 구합니다.자꾸 런타임에러가 나서 이것때문에 3시간을 헤맸는데 count함수에서 blackFirst, whiteFirst체스판 시작범위를 잘못적어놓았네요.....ㅠㅠ 코드 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152.. 2018. 12. 14.