C#) Null과 Void의 차이
·
Programming/C C# C++
Null이란 변수에 아무것도 설정되지 않았다는 것을 의미하는 상수를 말한다.예를 들어int T = Null;이런 식으로 선언을 한다면 T의 값은 아예 정의되어 있지 않다는 것을 의미한다.이 Null이라는 상수는 0과는 또 살짝 다른데, 0을 대입하게 되면 값 자체는 존재하지만 그 값이 0인 것을 의미하고, Null을 대입하면 값조차도 없다는 의미이다. Void의 경우에는 C++에서와 C#에서의 의미가 살짝씩 다르다.C++의 경우 포인터로써 사용할수 있기 때문에 메소드에서 어떤 데이터도 반환하지 않는다는 의미를 갖는데 반해,C#에서는 주로 데이터 형식을 지정해야 하지만, 실제로 반환되는 데이터가 없는 경우 사용한다. 일반적으로 주로 사용하는 void 포인터의 경우 가리키는 대상이 없는 포인터라는 의미를 가..
게임수학) 삼각함수 - 3
·
Programming/기타
덧셈정리이전 포스트에서 단위원에 대해 소개했었다.단위원을 이용하면 내각이 90도를 넘더라도 삼각함수의 수치를 구할수 있었다. 이제 이 그림을 한번 보자. 똑똑한 여러분들은 점 P를 P'의 위치로 옮기게 된다면 내각이 α+β가 되어 좌표가 cos(α+β), sin(α+β)가 된다는 것을 알 수 있을 것이다.그렇다면 이 cos(α+β), sin(α+β)는 어떻게 구할 수 있을까? 덧셈정리라는 공식을 이용하면 다음과 같이 결론이 나오게 된다.  자세한 증명에 대해서는 생략하겠다. 어차피 고등학교 수학 수준이니 나무위키만 찾아도 나올 것이다. 이 덧셈정리를 P'에 적용해보면 원래의 점 P(cosα, sinα)를 β만큼 회전한 점 P'의 위치는 다음과 같이 나오게 된다. 덧셈정리를 응용하면 반각공식, 배각공식 등..
BOJ - 나누기 1075
·
코딩테스트
해결방법끝의 두 자리를 00으로 초기화 시켜서 저장한 뒤, 00부터 99까지 하나씩 올려가면서 나누어 떨어지는 값을 찾는다.중요한 것은 문제에서 한자리인 경우 앞에 0을 추가하여 두 자리로 만들어야 한다는 조건이다.setw(2)  정답 코드#include #include using namespace std;int main(){ int N, F; cin >> N >> F; int N0 = (N / 100) * 100; int result = 0; for (int i = 0; i
자료구조) 템플릿, 인라인
·
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 == "문제") { ..