C,C++

    [C++] 7569번: 토마토

    https://www.acmicpc.net/problem/7569 7569번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N과 쌓아올려지는 상자의 수를 나타내는 H가 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M ≤ 100, 2 ≤ N ≤ 100, www.acmicpc.net 풀이 7576번도 토마토였는데 또 토마토다! 실제로 idea도 7576번의 토마토를 그대로 따른다. 차이는 오로지 2차원이냐 3차원이냐다. 여기서 또 다른 utility인 tuple을 사용할 수 있다. 2차원 -> pair / 3차원 이상 -> tuple (pair과 utility는 STL 같지만 utility 라이브러리에 저장되어 있다.) https://modoocode...

    많은 수의 전역변수를 선언하면 안될까?

    전역변수는 코드가 복잡해지면 복잡해질수록 독이 된다. 하나의 전역변수를 여러 개의 함수가 사용한다고 해보자. 위에 봤다 아래 봤다가 어지럽다. 이는 유지,보수를 어렵게 하는 원인이 된다. 또 여러 개의 전역변수를 선언했다고 가정하면 변수는 전역변수만 있는 것이 아니기 때문에 헷갈릴 수 있다. 즉, 프로그램 구조가 복잡해지기 때문에 많은 수의 전역변수를 사용하는 것은 지양해야한다. 또 어디에서든 갖다 쓸 수 있다는 것은 데이터 값이 의도하지 않게 변경될 수 있다는 것임을 의미하기도 한다. 프로그램이 종료될 때 까지 메모리에 존재한다고하여 공간이 낭비될 수 있다.

    공용체(union),리틀 엔디안(Little Endian)과 빅 엔디안(Big Endian)

    공용체(Union) 많이 사용하는 것은 아니지만 C언어에서 제공하는 것들 중 하나입니다. 공용체는 구조체와 비슷하지만 구조체와 달리 메모리를 '공유'합니다. 예를 들어보면 struct A { int i; char j; }; 구조체는 이와 같이 int i와 char j가 차지하고 있는 메모리는 독립적입니다. 저희가 알고있는 것과 같죠. 그렇다는 공용체는? union A { int i; char j; }; 위 그림처럼 각 멤버들의 시작주소는 동일합니다. 즉 메모리를 공유하고있습니다. 테스트해보기 위해 코드를 보겠습니다. #include union A { int i; char j; }; int main() { union A a; a.i = 0x12345678; // 4바이트 printf("%x", a.j); ..