본문 바로가기

분류 전체보기

BOJ 백준 2162 선분 그룹 <선분 교차> https://www.acmicpc.net/problem/2162 이 문제는 최대 3000개의 선분을 입력 받고 그 선분들이 한 점이라도 공통된 점이 있다면 한 그룹으로 엮는다. 그룹의 수와 가장 많은 선분을 가진 그룹의 선분의 개수를 출력해주면 된다. 처음에는 선분의 식을 구해서 다른 선분의 양 끝점을 대입했을 때 -와 +가 나오는 경우에 교차하는 형태로 접근하려 했으나 모든 경우의 수를 고려하지 못할 뿐더러 코드가 매우 복잡했다. 결국 선분 교차 알고리즘을 검색하였고, 그 결과 CCW라는 새로운 알고리즘을 알게되었다. CCW는 세 점이 시계 방향인지, 반 시계 방향인지, 평행한 지 알려주는 알고리즘이다. CCW를 이용하여 선분 교차 여부를 판별하는 알고리즘을 짤 수 있었다. 1. 선..
선분 교차 알고리즘 <CCW 이용> http://jason9319.tistory.com/358 위의 블로그에서 보고 배웠습니다. CCW : CounterClockWise의 약자로 뜻은 '시계 반대 방향'을 의미한다. 세 가지 점 (a, b, c)가 주어졌을 때, a->b->c 가 1. 시계방향2. 반시계방향3. 평행 중 어떤 경우인지를 분별해주는 알고리즘이다. (x2 - x1)(y3 - y1) - (y2 - y1)(x3 - x1)의 값이 0보다 큰 경우 : 반 시계 방향 0인 경우 : 평행 0보다 작은 경우 : 시계 방향 * 위의 굵은 색 식의 값을 2로 나누면 삼각형의 넓이가 나온다고 한다. 굵은 색의 식을 나열하면 x1y2 + x2y3 + x3y1 - x1y3 - x2y1 - x3y2 가 된다. 이 식을 코드로 나타내면 아래 op와 관..
C++ :: Hangman Game 만들기 https://www.youtube.com/watch?v=huGNu_omBJQ&list=PL40b7ziLrhgWasb38uVRvyNCveVmNqh_g 위의 링크는 땅코맹이님의 주소입니다. 위의 유투브 영상을 본 뒤에 만들었습니다. 1. 콘솔창 크기 조절 - #include, #include system("mode con: cols=값 lines=값"); // 콘솔 크기 조정system("title HangmanGame"); // 콘솔창 타이틀 변경 2. 콘솔 내 커서 위치 조정void gotoxy(int x, int y) { COORD Pos; Pos.X = x * 2; Pos.Y = y; SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE..
C++ :: 콘솔 글자 및 배경색 변경하기 #include #include using namespace std; enum Color { BLACK, BLUE, GREEN, CYAN, RED, MAGENTA, BROWN, LIGHTGRAY, DARKGRAY, LIGHTBLUE, LIGHTGREEN, LIGHTCYAN, LIGHTRED, LIGHTMAGENTA, YELLOW, WHITE }; void textcolor(int foreground, int background) { int color = foreground + background * 16; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), color); } int main() { textcolor(LIGHTBLUE, BLACK); cout
유니티 :: 좌표계 유니티의 좌표계는 아래와 같이 3가지가 있다. 1. World Point : 실제 gameObject의 transform.position 값 2. Viewport Point : 카메라 내에서 오브젝트가 위치하고 있는 비율 ( 따라서 값이 0~1 사이의 값으로 나타난다 ) 3. Screen Point : 카메라 내에서 오브젝트의 위치를 해상도를 기준으로 좌표를 매긴 값 ex) 1920 x 1080 해상도에서는 (0, 0) 부터 (1920, 1080) 까지 표현할 수 있다. 즉, World Point 값 x Viewport Point 값 = Screen Point 값이 된다. * Viewport Point를 활용하면 현재 오브젝트가 화면 내에 나타나지 않을 때 어디에 위치해 있는지 알 수 있다. x < 0 ..
유니티 :: 이벤트 함수 이벤트 함수란, 호출되지 않아도 만들어져만 있다면 자동으로 실행되는 함수로, 호출되는 시점이 정해져 있는 함수들이다. 1. Reset() : 에디터에서 처음 연결될 때, 혹은 Reset 명령을 실행했을 때 호출 2. Awake() : Start 함수 이전, 혹은 활성화 직후에 호출되는 함수 3. OnEnable / OnDisable : 활성화 / 비 활성화할 때마다 호출 OnEnable의 경우 Start 이전, Awake 후에 호출되는 함수이다. 순서) Awake() -> OnEnable() -> Start() 4. OnCollisionXXX 와 OnTriggerXXX 의 차이는 물리적 연산을 하는 지 여부에 있다. OnColiision의 경우 물리적 연산이 작용된다. OnCollis..
Unity2D 기능 구현 :: 날아오는 화살 막아내기 1. prefab에 오브젝트 할당하기 1. 화살과 캐릭터의 주먹 충돌 OnTriggerEnter2D(Collider2D col) : Score 증가 2. 화살과 캐릭터 몸체 충돌 OnCollisionEnter2D(Collision2D col) : Hp 감소 이미지 파일들은 InFlearn 강의 의 수업 자료를 이용하였습니다. 수정) 싱글턴 오브젝트 이용
유니티 :: prefab에 오브젝트 할당 prefab에 연결되는 객체는 반드시 프리팹 내부에 있는 오브젝트여야 한다. 이 말은, prefab은 다른 scene의 오브젝트와 달리 public GameObject를 선언해주어도 오브젝트를 외부에서 드래그 & 드랍으로 할당해줄 수 없다. 나의 경우 GameManager를 prefab에 할당하고 싶었는데, GameManager의 자료형을 할당해 주는 방법은 찾지 못하였고 GameObject를 찾아주는 GameObject.Find() 를 이용하였다. * GameObject.Find() 는 Scene에 있는 모든 오브젝트들을 검사하여 찾아주는 것으로, 부하가 걸리는 함수이다. 따라서 Frame마다 실행되는 Update 함수에 쓰지 않는 등 신경 쓰면서 사용해야 한다. 1. prefab의 Start함수에 p..