분류 전체보기

문제 https://www.acmicpc.net/problem/2573 2573번: 빙산 첫 줄에는 이차원 배열의 행의 개수와 열의 개수를 나타내는 두 정수 N과 M이 한 개의 빈칸을 사이에 두고 주어진다. N과 M은 3 이상 300 이하이다. 그 다음 N개의 줄에는 각 줄마다 배열의 각 행을 www.acmicpc.net 풀이 방법 그래프 탐색을 활용한 구현 문제다. 주의해야 할 것은 시작부터 덩어리가 이미 분리되어 있는 케이스가 있기 때문에 녹이기 전에 먼저 덩어리 개수를 확인해줘야 한다. 따라서 현재 빙산의 높이 정보를 토대로 빙산의 덩어리가 두 덩어리 이상이면 현재 시간을 출력하고, 그렇지 않다면 문제의 설명대로 빙산을 녹이고 시간을 증가시키면 된다. 빙산의 덩어리 개수를 세는 알고리즘은 BFS나 ..
타일형 게임을 구현할 때 유니티에서 제공하는 타일맵을 사용하면 팔레트를 이용해 쉽게 타일을 배치 할 수 있다는 장점이 있다. 단순히 타일을 배치하는 것만으로 충분할 수도 있지만, 구현하려는 게임에 따라 각 타일에 데이터를 저장 해야 할 때가 있다. 어떻게 해야할까? 먼저 타일맵부터 설명하고 그 이후 구현 방법을 서술하겠다. 타일맵에서 특정 좌표의 타일 얻기(또는 셀 좌표 얻기) 타일맵은 그리드 형태로 되어있으며 각 타일(셀)의 좌표는 다음과 같이 얻을 수 있다. Tilemap tilemap; // 타일맵 (GetComponent로 얻거나 인스펙터에서 할당해줬다고 가정) Vector3 localPos; // 로컬 포지션 Vector3 worldPos; // 월드 포지션 Vector3Int worldToCe..
문제 lvalue에 사용할 수 있는 참조 연산자 &를 rvalue에 사용하고 있어서 발생한 문제이다. 내 경우엔 DirectX 예제 코드를 vs2022로 컴파일하던 중 C2102 에러가 발생했다. 원인이 되는 코드는 어떤 변수에 구조체를 할당하지 않고, 바로 함수의 매개변수로 그 구조체의 주소를 넘겨주고 있었다. 말로 하니 어려운데 아래 코드와 비슷하다. struct MyStruct { int i; }; MyStruct bar () { MyStruct result = { 5 }; return result; } /* won't compile; 'lvalue required as unary & operand */ void qux () { int *j = &bar().i; } 해결 rvalue에 &연산을 하지..
Lvalue와 Rvalue C++에서 lvalue는 특정 메모리 위치를 가리킨다. 반면 rvalue는 아무데도 가리키지 않는다. 일반적으로 rvalue는 일시적이고 수명이 짧지만 lvalue는 변수로 존재하기 때문에 수명이 더 길다. int x = 666; // ok 여기서 666은 rvalue이다. 숫자(엄밀히 말하자면 리터럴 상수)는 프로그램 실행 중의 임시 레지스터를 제외하면 특정 메모리 주소가 없다. 666은 변수 x에 할당된다. 변수는 특정 메모리 주소가 있으며 따라서 lvalue이다. C++에서 할당 연산자(assignment operation)인 =는 왼쪽 피연산자(left operand)로 lvalue가 필요하다. 그리고 lvalue인 x를 가지고 다음과 같은 것을 할 수 있다. int *..
virtus
'분류 전체보기' 카테고리의 글 목록 (22 Page)