자료구조) 템플릿, 인라인
·
Programming/자료구조 & 알고리즘
템플릿은 함수나 클래스를 찍어내듯이 만들수 있도록 일반화(generic) 시켜주는 도구이다.템플릿과 유사한 함수가 바로 인라인 함수인데, 둘의 차이점은 템플릿 = 그 지점에 복사해서 자료형을 매핑해서 복사해준다.인라인 = 라인 안에 코드를 복사해서 넣어주겠다.이다. 인라인이 성립하는 조건은 두 가지가 있는데,1. 인라인 키워드가 붙어 있을 때.2. 클래스 내부에 선언과 정의를 동시에 할 것.이 조건을 만족하는 예시class A{ inline int add() { return 0; } // 즉시 종료}; 이런 경우이거나,class A{ int add() {}}; 이런 경우를 말한다. 템플릿 또한 마찬가지로, 템플릿 선언은 다음과 같이 할 수 있다.templetevoid Add(T a){ }Add()..
게임수학) 삼각함수 - 2
·
Programming/기타
단위원앞선 포스트에서 삼각함수는 매개변수 θ를 입력받아 출력되는 결과값이 변화하는 함수라고 설명했었다.지금까지는 직각삼각형만을 염두에 두고 개념을 살펴보았지만 실제 삼각형은 θ값이 0~90도 사이에만 있는것은 아니다. 따라서 직각삼각형 뿐만 아니라 직각삼각형을 포함하는 원을 통해 삼각함수를 표현하는 방법에 대해 알아보자.  이 그림은 점 A를 중심으로 하는 반지름의 길이가 1인 단위원 위에 삼각형 ABC를 올려놓은 그림이다.점 A를 중심으로 원 위의 점 B를 이어 선분 AB를 그린다면 당연히 선분 AB는 길이가 1이 될 것이다.그리고 점 B에서 x축 방향에 수직으로 선을 그어 겹치는 부분을 점 C라고 하면 선분 AB와 선분 AC사이의 각, 다시말해 θ를 사인의 정의를 이용하여 구할수 있게 된다. 선분 B..
BOJ - 고무오리 디버깅 20001
·
코딩테스트
해결방법cin 대신 getline을 사용하여 문장을 한번에 입력받는다. 정답 코드#include #include using namespace std;int main(){ int problemCount = 0; string input; getline(cin, input); if (input == "고무오리 디버깅 시작") { while (true) { getline(cin, input); if (input == "고무오리 디버깅 끝") { break; } else if (input == "문제") { ..
게임수학) 삼각함수 - 1
·
Programming/기타
삼각형은 컴퓨터 그래픽스의 가장 기본적인 도형중 하나이다.3D그래픽의 가장 작은 단위인 폴리곤만 해도 삼각형으로 이루어져 있다는 것을 알 수 있다. 삼각형은 세 개의 정점으로 이루어진다. 이 세 개의 정점 중 두 개의 정점을 잇는 선분을 변이라고 한다.이 삼각형의 세 변중 두 개의 변이 이루는 각을 내각이라고 한다.또한 삼각형의 세 내각의 합은 항상 180도 이다. 삼각형은 그 모양에 따라 다양한 이름을 가지고 있지만, 우리가 삼각함수에서 다루고자 하는 삼각형은 직각삼각형이다.직각삼각형은 세 개의 정점 부분의 내각 중 하나가 직각을 이루는 삼각형을 말한다. 정점 C부분의 내각이 바로 직각이다.또한 맞은편의 비스듬한 변 h를 빗변이라 하고, 바닥 b를 밑변, 마지막 a변을 높이라고 한다. 삼각함수란 직각삼..
BOJ - 골뱅이 찍기 23805
·
코딩테스트
해결방법가로 세로 각 5개의 셀은 총 25개의 셀이고, 좌우로는 a~e, 상하로 1~5라고 했을 때, d1~d4, b2~b5를 공백 처리하면 된다. 정답 코드#include using namespace std;void Cell(int N){ for (int i = 0; i > N; for (int row = 0; row = 0 && cellRow = 1 && cellRow
1.1 + 0.1 == 1.2가 false인 이유
·
Programming/C C# C++
요약 : 10->2진법 변환 한계로 소수 표현이 제대로 안되어서 연산 후 결과를 비트연산하게되면 다른값이 나올 수 있다. 가끔 소수점 단위 연산을 해야하는 경우가 있다. 예를 들어 0.1초마다 주위를 스캔한다던지, 무게를 0.25초마다 측정한다던지 하는 경우 말이다. 이런 경우 특별한 조치를 취해주지 않는다면 오류가 발생할 가능성이 있다. 예를 들어 이 사진의 경우 1.1 + 0.1이 1.2와 동일한지를 계산하는 코드이다. 상식대로라면 동일하다는 결과가 나와야 하지만 결과는 보다시피 거짓이 나오게 된다.어디가 문제일까?컴퓨터는 숫자를 저장할 때 바이트 단위로 수를 집어넣는다. 실수를 저장할때는 주로 float, double을 사용하는데, float는 4바이트, double은 8바이트라는 차이점이 있을 뿐..