목표를 쓰게 된 계기: 실패 + 자기성찰

목표의 정의 규칙

  • 나는 우주에 갈 정도로 충분한가, 자문자답
  • 진인사대천명 중 진인사를 제대로 하고 있는가?

목표

  • 이론을 정리하자
    • 이유: 실용만 충실해도 협업이 된다는 상상에 빠지는 순간 난 결국 끝이다.
    • 내가 하는 것에 대해 제대로 알고 시작한다.
    • 해당에 대해서 설명할 수 있는 글을 블로그에 써 놓는다.
      • 자세한 것 외에 간단히 최대 5줄로 설명 가능하도록 한다.
    • 해당을 돌아볼 수 있도록 시험처럼 매주 무작위로 몇 가지를 띄워서 해당을 주간식으로 확인한다.
      • 간단히 할 수 있는 웹 사이트를 제작하자.
        • Ex) Road to Creator
  • 구조와 스토리를 정리하자
    • 이유: 동일한 상황에서 2번 실패하지 않는다.
    • 지금 하고 있는 것에서 제대로 정리, 내가 무엇을 했는 지 정리한다.
      • 제대로 기억이 나지 않는다고 적당히 이해한 것을 지어내지 않는다.
      • 나는 미숙하다는 것을 인정한다.
    • 일지를 쓰듯이 해당 구조 중 문제 발생과 해결에 대해서 간결히 정리한다.
      • 문제가 발생한 경우 원인에 대해서도 제대로 성찰한다.
  • 경험에서 나온 실물을 기반으로 실력을 상승시키자
    • 이유: 내가 살면서 실패한 것 또한 내 경험이다, 그것을 감정과 기억으로만 가지고 있는 것은 너무 아깝다.
    • 빠르게 정리하고, 빠르게 만들어서 볼품 없더라도 사람들에게 공개한다.

'_Diary' 카테고리의 다른 글

[SH PROJECT 개발일지] 2022-05-25  (0) 2022.05.26
2022년 키워드  (0) 2022.01.01
개발자 일지 2021-07-25  (0) 2021.07.25
블로그 이미지

RIsN

,

문제: Cinemachine을 사용할 때 Virtual Camera를 캐릭터에서 오브젝트(모닥불)로 변경할 때 흔들림이 발생

  • 원인
    • Follow와 LookAt에 오브젝트를 넣을 때 해당 카메라가 따라가고, 바라보며 흔들리는 현상
  • 제약 및 현 상황
    • 한 번만 발생
    • Follow와 LookAt 둘 다 써야 조금 더 보기 좋은 상황, 즉, 둘 다 써야 함
    • Delay를 넣으면 미묘하게 느낌이 안 좋음
  • 해결
    • Follow와 LookAt을 따로 메소드로 변경
    • 우선도를 바꾸기 전에 전 단계(현재 케이스는 설치 결정 팝업 화면)에서 이미 해당 메소드를 실행
      • (기존 변경) 현재 Instantiate될 오브젝트를 카메라가 따라가고 있는데, 좌표 타일 자체를 따라가도록 변경
  • 추가
    • 오브젝트가 움직일 때(위치가 바뀔 때) Follow와 LookAt도 그대로 놔둔 채로 움직이면 흔들림이 발생
      • 어차피 방향이 정해졌다면 Follow만 처리해서 위치 변경
블로그 이미지

RIsN

,

목표: 설치할 때 해당 오브젝트가 투명으로 보이도록 하는 처리

  • 아래와 같이 Unlit에서 Transparent를 사용 후 투명도 변경

블로그 이미지

RIsN

,

미로 생성 알고리즘

C# 2023. 2. 7. 09:18

Binary Tree 미로 생성 알고리즘

  • 오른쪽 방향으로 갈 지 아래 방향으로 갈 지를 랜덤으로 정함

Side Winder 미로 생성 알고리즘

  • 오른쪽 방향(한 방향)으로 가다가 아래 방향(다른 방향)으로 가야 하는 경우가 생기면 오른쪽으로 움직인 곳 중 랜덤으로 한 곳에서 정해서 감

참고 사이트: https://errorcode1001.tistory.com/9

'C#' 카테고리의 다른 글

[C#] IComparable  (0) 2023.05.18
[VSCode: Error] Mac OS에서 FSharp Path 에러 생길 때  (0) 2023.05.09
Javascript의 getInt16()를 C#으로 Convert  (0) 2022.12.20
GetHashCode  (0) 2021.04.23
백준 1193 : 분수찾기  (0) 2021.02.03
블로그 이미지

RIsN

,

Mobile에서 너무 느리게 실행되는 문제 발생

  • 이게 답인지 모르겠지만 일단 이 부분 제거 후 느린 것이 사라짐
    • Post Processing을 사용하는 것으로 되어 있는 상황
    • 현재 게임에서는 Post Processing을 사용하지 않기에 해당 제거
      • 어떤 상황에서 저것이 자동으로 만들어지는 지 확인 필요
  • Project Settings ⇒ Player  Other Settings

블로그 이미지

RIsN

,

게으른 완벽주의자를 위한 심리학

1장. 습관을 바꾸려면 습관을 이해하라

  • 이 책을 완독하고 싶은 이유
    • 내가 하는 노력이 부족하다고 느끼고, 매번 한꺼번에 처리 하는 자신이 싫어서 개선하고 싶다.
    • 두려움에 도전하지 못하는 것이 싫어서 개선하고 싶다.
    • 내 위치를 더 높이고 성공하고 싶다.
  • 나의 미루기 습관은 어느 정도일까?
    1. 해야 할 일이 중요하다는 사실을 알면서도 미루는가? (네)
    2. 마지막까지 일을 미룬 탓에 연체료 등 추가 지출을 한 경험이 있는가? (아니오)
    3. 어쩔 수 없는 경우에만 결정을 내리는 편인가? (아니오)
    4. 스스로 세운 계획을 따르지 않는 자신에게 친구나 가족이 화를 내는가? (아니오)
    5. 중요한 일을 주로 막판에 끝내는 편인가? (아니오)
    6. 일을 너무 오래 미뤄 불필요한 스트레스를 받는가? (네)
    7. 금방 끝날 간단한 일을 쓸데없이 오래 미루는가? (네)
    8. 일을 마칠 시간이 부족하여 문제를 겪는가? (아니오)
    9. 마감이 다가오면 다른 일을 하며 시간을 허비하는가? (네)
    10. 어떤 활동이나 과업을 더 빨리 시작했다면 지금 당신의 삶이 더 나아졌으리라 생각하는가? (네)
    • '그렇다'라는 답변이 4개 이상이면 당신의 미루기는 문제가 되는 수준일 수 있다.
    • 당신은 미루기가 자신의 인생에 악영향을 미치면서 금전적, 사회적 손해를 입히고 있으며, 여러 기회와 감정적 편안함을 희생하고 만들고 있다는 사실을 이미 인지하고 있다.

2장. 미루기의 악순환을 끊지 못하는 이유

3장. 심리적인 문제가 미루기의 원인이 될 때

4장. 미루기 극복을 위한 접근법

  • 나의 미루기 스타일은 무엇일까?
    1. '할 일' 목록을 작성할 때 가장 우선순위에 올릴 일을 결정하는 게 어렵게 느껴지는가? (아니오)
    2. 어떤 일을 하려 할 때 그 일이 중요한 이유를 떠올리지 못할 때도 있는가? (아니오)
    3. 지루하고 따분한 과업을 할 때 동기 부여를 어려워하는 편인가? (네)
    4. 과업을 수행하려 마음먹어도 시작점을 찾기 어려워하는 편인가? (아니오)
    5. 과업을 시작하는 것부터가 어려운가? (네)
    6. 과업에 집중하기 어려워하는 편인가? (네)
    7. 과업을 시작하려 할 때 자신이 중압감이나 불안을 느끼고 있다는 사실을 스스로 인지하는가? (아니오)
    8. 결정을 내리기 힘들어하는 편인가? (네)
    9. 과업이나 프로젝트를 시작은 해도 꾸준히 진행하여 완수하는 데 어려움을 겪는가? (네)
    10. 실수나 실패 혹은 성공에 대한 두려움으로 시작한 과업을 끝내지 못하는가? (아니오)
    • 2번, 3번 문항 → 6장: 우선 일의 동기를 파악하라
    • 4번, 5번 문항 → 7장: 시작은 생각보다 어렵다
    • 6번 문항 → 8장: 어떻게 집중력을 유지할 수 있을까
    • 7번, 8번 문항 → 9장: 회피를 극복하는 감정 기술
    • 9번 문항 → 10장: 꾸준함을 유지하는 법

5장. 일에는 순서가 있다

6장. 우선 일의 동기를 파악하라

7장. 시작은 생각보다 어렵다

  • 내가 미루는 것이 합리적인 판단인지 확인하자
  • 내가 미루고 있는 것을 하는 모습을 상상하자
  • 내가 미루던 것이 끝났을 때 얻을 미래의 모습을 떠올리자
  • 친구 조언) 타인과의 비교 보다 평행 세계의 자신과 비교할 것
    • 지금 이걸 한 나와 이걸 하지 않은 나, 미래에 더 좋은 것을 쟁취하는 것은 누구일까?
    • 평행 세계이기 때문에 모든 조건은 동일하다.
    • 이걸 한 내 미래에는 더 좋고 행복할 일이 있을 가능성이 높다.

8장. 어떻게 집중력을 유지할 수 있을까

9장. 회피를 극복하는 감정 기술

  • 부정적인 자기 대화를 줄이자, 내가 어찌할 수 없는 상황은 받아들이고 긍정적으로 생각하자
  • 대처 카드를 만들자
    1. 대응하려는 상황을 쓴다.
    2. 내가 할 수 있는 전략, 도움을 요청할 수 있는 사람 등을 쓰자
    3. 그리고 해당 상황에 그걸 보자

10장. 꾸준함을 유지하는 법

  • 꾸준히 같이 발전 할 사람을, 각자 진행도에 대해서 점검을 할 수 있는 사람을 찾자
    • 비판보다 구체적인 방향성을 알려주는 사람을 소중히 하자

11장. 시작한 일을 끝내려면

나오며_ 미루기로 고통 받지 않는 삶


  • 이 책을 읽게 된 계기
    • 지하철에서 어떤 분이 너무 열심히 읽고 있었다.
  • 미루는 것에 대해서 조금 다시 생각해볼 수 있던 책이다.
  • 미래의 삶에 대해서 다시 생각해볼 수 있었다.
    • 난 우주에 가고 싶다.
    • 더 오래 살고 싶다.
    • 가족이 더 행복했으면 좋겠다.
    • 언젠가 쓰레기 산의 아이들, 이 세상 모든 아이들이 모든 기회를 가지고 있었으면 좋겠다.
블로그 이미지

RIsN

,

전제 조건

  • 첫번째 Scene에서 생성되어 게임이 실행되는 동안 계속 소유하고 있는 무언가가 있어야 함
    • 현재 쓰고 있는 구조에서는 App이라는 스크립트가 게임 시작부터 끝까지 존재
  • 각 Scene마다 소유하고 있는 스크립트가 존재해야 함
    • 현재 쓰고 있는 구조에서는 _Ruler(상속)라는 스크립트가 존재
      • 예) Ruler_Logo, Ruler_Lobby 등

방법

  1. (예외 처리 1) 첫번째 Scene으로 갈 지 안 갈 지를 판단
    • isGoToApp:Bool 라는 Inspector 상에서 보이는 변수를 _Ruler가 소유 중
    • 해당 isGoToApp이 True면 밑의 내용을 실행, False면 return
      • (예외 처리 2)
        • False일 때 App을 아예 생성해서 모든 작업들(데이터 로드 등)을 우선 진행한 후 이 Scene에 남아 있게 할 수도 있음
          • 이 Scene에서는 로드가 전부 될 때까지 지연 처리
        • 다만 그 경우 여러모로 각 씬 + 협업하는 사람이 합(데이터 로드는 무조건 한 곳)을 맞춰야 함
  2. _Ruler가 Awake될 때 App이라는 스크립트가 현재 화면 내에 존재하는 지 확인
  3. App이 없다면 바로 0번째 Scene을 로드
  4. 완료

생각해볼 것

  • 저런 처리(스크립트 존재) 없이 유니티 상에서 시작 시에 현재 Scene을 판단해서 어떤 항목의 ON/OFF에 따라 첫번째(0) Scene으로 갈 수 있지 않을까?
블로그 이미지

RIsN

,

문제

베르트랑 공준은 임의의 자연수 n에 대하여, n보다 크고, 2n보다 작거나 같은 소수는 적어도 하나 존재한다는 내용을 담고 있다.

이 명제는 조제프 베르트랑이 1845년에 추측했고, 파프누티 체비쇼프가 1850년에 증명했다.

예를 들어, 10보다 크고, 20보다 작거나 같은 소수는 4개가 있다. (11, 13, 17, 19) 또, 14보다 크고, 28보다 작거나 같은 소수는 3개가 있다. (17,19, 23)

자연수 n이 주어졌을 때, n보다 크고, 2n보다 작거나 같은 소수의 개수를 구하는 프로그램을 작성하시오. 


입력

입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 케이스는 n을 포함하는 한 줄로 이루어져 있다.

입력의 마지막에는 0이 주어진다.


출력

각 테스트 케이스에 대해서, n보다 크고, 2n보다 작거나 같은 소수의 개수를 출력한다.


코드

#include <iostream>
#include <cmath>

using namespace std;
int main()
{   
    // :: 문제
    // :: 베르트랑 공준은 임의의 자연수 n에 대하여, n보다 크고, 2n보다 작거나 같은 소수는 적어도 하나 존재한다는 내용을 담고 있다.
    // :: 이 명제는 조제프 베르트랑이 1845년에 추측했고, 파프누티 체비쇼프가 1850년에 증명했다.
    // :: 예를 들어, 10보다 크고, 20보다 작거나 같은 소수는 4개가 있다. (11, 13, 17, 19) 또, 14보다 크고, 28보다 작거나 같은 소수는 3개가 있다. (17,19, 23)
    // :: 자연수 n이 주어졌을 때, n보다 크고, 2n보다 작거나 같은 소수의 개수를 구하는 프로그램을 작성하시오.  

    // :: 입력
    // :: 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 케이스는 n을 포함하는 한 줄로 이루어져 있다.
    // :: 입력의 마지막에는 0이 주어진다.

    // :: 출력
    // :: 각 테스트 케이스에 대해서, n보다 크고, 2n보다 작거나 같은 소수의 개수를 출력한다.

    // :: 소수 저장소 등록
    bool notPrime[123456 * 2 + 1] = { false, true, };

    // :: 소수 등록
    for (int i = 2; i <= sqrt(123456 * 2); i++) {
        if (notPrime[i] == false) {
            for (int j = i * 2; j <= 123456 * 2; j += i) notPrime[j] = true;
        }
    }

    // :: 출력 선언
    string output = "";

    // :: 연산
    int num;
    while(true) {
        // :: 입력
        cin >> num;
        if(num == 0) break;
                    
        // :: Count 획득
        int count = 0;
        for(int index = num + 1; index <= num * 2; index++) {
            if(!notPrime[index]) count += 1;
        }
        
        // :: 카운트 기록
        output += to_string(count) + "\n";
    }

    // :: 출력
    cout << output;

    return 0;
}

참고

블로그 이미지

RIsN

,

  • Auto Simulation이 켜져 있는 지 확인
블로그 이미지

RIsN

,

백준 2581: 소수

C++/Baekjoon 2023. 1. 29. 20:31

문제

자연수 M과 N이 주어질 때 M이상 N이하의 자연수 중 소수인 것을 모두 골라 이들 소수의 합과 최솟값을 찾는 프로그램을 작성하시오.

예를 들어 M=60, N=100인 경우 60이상 100이하의 자연수 중 소수는 61, 67, 71, 73, 79, 83, 89, 97 총 8개가 있으므로, 이들 소수의 합은 620이고, 최솟값은 61이 된다.


입력

입력의 첫째 줄에 M이, 둘째 줄에 N이 주어진다.

M과 N은 10,000이하의 자연수이며, M은 N보다 작거나 같다.


출력

M이상 N이하의 자연수 중 소수인 것을 모두 찾아 첫째 줄에 그 합을, 둘째 줄에 그 중 최솟값을 출력한다.

단, M이상 N이하의 자연수 중 소수가 없을 경우는 첫째 줄에 -1을 출력한다.


코드

#include <iostream>
#include <cmath>

using namespace std;

static bool IsPrimeNumber(int _number)
{
    // :: 예외처리
	if (_number == 1) return false;
	if (_number == 2) return true;
	
    // :: 2부터 sqrt(_number)까지 나누어 떨어지는 수가 있는지 확인한다.
    int i;
    for (i = 2; i <= sqrt(_number); i++) if (_number % i == 0) return false;

    // :: 소수인 경우
    return true;
}
int main()
{   
    // :: 문제
    // :: 자연수 M과 N이 주어질 때 M이상 N이하의 자연수 중 소수인 것을 모두 골라 이들 소수의 합과 최솟값을 찾는 프로그램을 작성하시오.
    // :: 예를 들어 M=60, N=100인 경우 60이상 100이하의 자연수 중 소수는 61, 67, 71, 73, 79, 83, 89, 97 총 8개가 있으므로, 

    // :: 입력
    // :: 입력의 첫째 줄에 M이, 둘째 줄에 N이 주어진다.
    // :: M과 N은 10,000이하의 자연수이며, M은 N보다 작거나 같다.

    // :: 출력
    // :: M이상 N이하의 자연수 중 소수인 것을 모두 찾아 첫째 줄에 그 합을, 둘째 줄에 그 중 최솟값을 출력한다. 
    // :: 단, M이상 N이하의 자연수 중 소수가 없을 경우는 첫째 줄에 -1을 출력한다.

    // :: 1. M과 N을 입력받는다.
    int M, N;
    cin >> M >> N;

    // :: 2. 소수인지 판별해서 합과 최소값을 구한다.
    int primeNumberMin = -1;
    int primeNumberSum = 0;
    for (int i = M; i <= N; i++)
    {
        if (IsPrimeNumber(i))
        {
            if (primeNumberMin == -1) primeNumberMin = i;
            primeNumberSum += i;
        }
    }

    // :: 3. 예외를 출력한다.
    if(primeNumberMin == -1) {
        cout << primeNumberMin << endl;
        return 0;
    }

    // :: 4. 합과 최소값을 출력한다.
    cout << primeNumberSum << endl;
    cout << primeNumberMin << endl;

    return 0;
}

참고

'C++ > Baekjoon' 카테고리의 다른 글

백준 1978: 소수 찾기  (0) 2023.01.28
백준 11653: 소인수분해  (0) 2023.01.26
백준 1929: 소수 구하기  (0) 2023.01.24
백준 5597: 과제 안 내신 분..?  (0) 2022.12.23
백준 10807: 개수 세기  (0) 2022.12.17
블로그 이미지

RIsN

,