https://www.acmicpc.net/problem/15683 15683번: 감시 스타트링크의 사무실은 1×1크기의 정사각형으로 나누어져 있는 N×M 크기의 직사각형으로 나타낼 수 있다. 사무실에는 총 K개의 CCTV가 설치되어져 있는데, CCTV는 5가지 종류가 있다. 각 CCTV가 감�� www.acmicpc.net 보자마자 대충 어떻게 구현해야 할지는 감이 왔는데, 이상한 부분에서 실수해서 시간을 많이 날린 문제. 첫 번째로 방향을 저장하는 벡터는 cctv 종류만큼 필요한데, 실수로 cctv 종류는 5개이면서 4개만 만들어두고 썼기 때문에 이상한 메모리에 접근하고 있었다... 두 번째로 dy, dx로 방향을 정한 후 인덱스만 참조한 것이 아니라 아예 방향 자체를 넣어줬는데, 가독성도 매우 구리..
https://www.acmicpc.net/problem/16637 16637번: 괄호 추가하기 길이가 N인 수식이 있다. 수식은 0보다 크거나 같고, 9보다 작거나 같은 정수와 연산자(+, -, ×)로 이루어져 있다. 연산자 우선순위는 모두 동일하기 때문에, 수식을 계산할 때는 왼쪽에서부터 순� www.acmicpc.net 문제만 보면 복잡해 보이지만, 문제에 다음과 같은 제약 조건이 있기 때문에 생각보다 간단하게 구현할 수 있다. 1. 연산자의 우선순위는 모두 동일하다. 2. 괄호 안에는 연산자가 하나만 들어 있어야 한다. 3. 중첩된 괄호는 사용할 수 없다. 때문에 무조건 (2 + 3) * (3 + 2) + (2 - 3)이나 2 + 3 - 10 * (2 - 5)와 같은 형태가 될 것이다. 이러면 그..
타임아웃이 났다. 정렬 함수를 잘못 짰나 해서 아예 기본 정렬로 가능하게끔 코드를 수정했지만... 여전히 타임아웃이 나고 있었다.왜 타임아웃이 난 걸까? using type = std::pair;std::vector vec(N);for (int i = 0; i < N; ++i) { // ... vec[i] = {-cnt, num};} 저 코드 때문이다. vec[i].first = -cnt; vec[i].second = num;이나정석대로 vec[i] = std::make_pair(-cnt, num);과 같이 사용한다면 타임아웃이 나지 않는다. 나는 vec[i] = {-cnt, num};를 사용했기 때문에 타임아웃이 났다...아마 {-cnt, num}을 만드는 과정에서 메모리에 새로 할당을 하고, vec[..
Unity에는 C의 math.h 헤더의 fmod 함수에 대응하는 Mathf.Repeat 메서드가 있다. 게임메이커는 큐나 리스트같은 자료구조도 있었고 lerp나 삼각함수같은 연산들도 당연히 지원했기 때문에 fmod나 repeat 둘 중 하나는 지원할 것이라고 생각했고, 실제로 repeat 예약어가 존재했다. 하지만, 알고 보니 repeat는 반복문의 일종이였다. for이나 while같이 조건을 써야 하는 반복문은 요요게임즈가 초보들에게 힘들다고 생각했는지, repeat(5) ; // repeat(5) { } 처럼 사용하는 반복문을 만든 것이다. 아마 블럭 안의 코드를 몇 회 반복하는 액션이 있고, 그걸 코드로 옮긴 게 이 repeat라고 생각한다. 그러면 실수형 데이터의 나머지 연산은 어떻게 하냐고 하면..
DirectXMath 벡터 DirectXMath 라이브러리의 벡터 Direct3D 응용 프로그램을 위한 표준적인 3차원 수학 라이브러리이다. 헤더 파일 DirectXMath.h를 포함시켜야(#include 하며, 추가적인 자료 형식들을 위해 DirectXPackedVector.h도 포함시켜야 할 수 있다. DirectXMath.h의 코드는 DirectX 네임스페이스 안에 속하며, DirectXPackedVector.h의 코드는 DirectX::PackedVector 네임스페이스 안에 속한다. x86 플랫폼을 대상으로 할 때에는 SSE2를 활성화시켜야 한다(프로젝트 속성 > 구성 속성 > C/C++ > 코드 생성 > 고급 명령 집합 사용). x64 플랫폼에서는 모든 CPU가 SSE2를 지원하기 때문에 따로..