12월, 2021의 게시물 표시

요일 찾아내기 알고리즘 Zeller's congruence C++

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 #include  < string > #include  < vector > #include  < iostream > #include  < algorithm >   using   namespace  std;   int  Zellercongruence( int  day,  int  month,  int  year) {      if  (month  = =   1 ) {         month  =   13 ;         year - - ;     }      if  (month  = =   2 ) {         month  =   14 ;         year - - ;     }      int  q  =  day;      int  m  =  month;      int  k  =  year %  100 ;      int  j  =  year  /   100 ;      int  h          =  q  +   13   *  (m  +   1 )  /   5   +  k  +  k  /   4   +         j  /   4   +   5   *  j;         h  =  h %  7 ;        return  h;          return   0 ; }   string solution( int  year, int  month, int  day)  {       string answer;      int  n  =  Zellercongruence(day, month, year);        switch  (

비동기 프로그래밍 Task에 대한 메모

이미지
나는 C#에는 비동기 프로그래밍을 할시 Thread 보다 Task를 애용하는데 2가지 이유가 있다 1. ThreadPool로 Thread를 가져와 최적,최소의 Thread를 이용하게 만든다. 2. 리턴값, 끝나는 시점, 델리게이트 등등 Thread로부터 없는 기능들을 사용할 수 있다. Thread는 상대적으로 로우-레벨 이기에  멀티쓰레딩에 대해 세밀한 조정이 필요한 경우 쓰자 일단 기본적인 예시를 보자.   1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 using   System .Diagnostics;   Stopwatch sw  =   new  Stopwatch(); sw.Start(); string  water  =  BoilWater(); string  expressed  =  ExpressCoffee();     Console . WriteLine ($ "pouring {water} and {expressed} into cup" ); Console . WriteLine ( "Coffee Done" ); Console . WriteLine ($ " Time : {sw.ElapsedMilliseconds} ms" );   sw.Reset();       string  BoilWater() {      Console . WriteLine ( "Boiling Water..." );     Task.Delay( 1000 ).GetAwaiter().GetResult();      Console . WriteLine ( "Finished Boiling Water" );      return   "Boiled water" ; }   string  ExpressCoffee() {      Console . WriteLine ( "Expres

백준 알고리즘 문제

 알고리즘 문제에선 기법을 모르면 안풀리는 것들이 있다 완전탐색(브루트포스), 분활 정복, Dynamic Programming 동적계획법, BFS, DFS, 백트래킹, 다익스트라, 크루스칼, 그리디 순으로 공부해보자

게임을 완성 후 후기

이미지
1.해상도&화면비&UI 이슈 해상도 와 전체화면 설정을 넣으려고 Brackeys 영상을 참조했는데, UI가 자동으로 해상도에 맞춰주는게 아니였다, 그래서 사진에 따라  canvas에 설정한다. 그러면 화면비 16:9 , 5:4 여러가지로 변형시킬때 UI가 카메라밖으로 나가는 등등  어색해지는데 UI의 pivot를 정중앙이 아닌 특정한 지점에 두어야 알아서 맞춰준다.   <- 그냥 이것만 아니면 됌! 2. 디버그용 코드 부재 대부분 게임에서 개발자가 게임 검증을 할때 특정한 문장을 치면 치트를 얻는 게 있다 이것이 없으니 불필요하게ㅡ '시작 : 대기 : 플레이어 코드에 직접 수정 : 시작' 하니  시간소모가 심하다. 다음부터 /키를 눌러 문장을 치면 무적이 되는 그런 걸 시도해보자 3. BehaviorTree 미숙함 Github에 행동트리 스크립트를 보고 이해안되는 것들을 배껴썼다 특히 적 AI를 만들고 다루는데 시간이 너무 많이 소비됐다. 어떠한 행동을 하는데 새로운 Leaf,즉 클라스를 만들기에 너무 지저분해진다 이건 어쩔 수 없기에 생성자를 간단하게 만드는 방법이나 찾아봐야겠다 플레이어가 최소거리에 도달하면 돌진하는 '차저'가 있는데 만약 플레이어가  돌진 궤도로부터 피하거나,  돌진하면 어떤 행동을 할 것인지 사소한 것부터 시작해 어쩔수 없이 리지드바디를 업데이트문에 처리하거나 만약 체력이 낮아서 2차 페이즈를 시작하는 이벤트를 넣어야하는데 어떻게 해야할지 몰라 나중에 업데이트하면 거대한 쓰레기가 될 것 같은 빛쟁이 코드를 집어넣었다. 또 코루틴이 안먹히기에 MonoBehavior를 지닌 게임 오브젝트를 응용해 썻다. chaser.StartCoroutine(CoolTime()); 이렇게! 게임을 다시 만들때 행동트리를 다시 살펴봐서 다음 문제점에 대해 수정해야겠다 - 행동트리 멈춤, 재시작  - 이벤트 확인 : 만약 -인가 의 상태 확인용 - 후에 배낄 github 다시 살펴보기 4. 그림 실력 UI는 유니