TIL day 26

2025. 1. 22. 11:28·TIL

1. 코딩 테스트


오전에 코딩 테스트 문제로 프로그래머스 level2 k진수에서 소수 개수 구하기 문제를 풀었습니다.

https://school.programmers.co.kr/learn/courses/30/lessons/92335

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

  • 뭘로 풀지?
    • 문제를 보고 크게 세가지 작업을 하면 문제를 풀 수 있을 것이라는 생각이 들었습니다.
      1. 먼저, 해당 숫자를 k진수로 바꾸기
        • while문을 통해서 n을 k로 나눈 나머지를 넣어주면 됩니다. (temp에 넣어주었습니다.)
        • 생각할 점은 while문 탈출 조건이 n > k 이므로, while문을 탈출한 직후의 값도 저장해 주어야 합니다.
      2. 다음으로 k진수로 바뀐 숫자를 0을 제외한 다음 쪼개서 저장하기
        • k진수로 만든 수를 넣은 벡터인 temp를 순환하면서 0을 기준으로 쪼개서 새로운 test 벡터에 넣어주었습니다.
        • k진수로 바꾸는 작업을 통해서 temp 벡터에 값이 역으로 들어가게 됩니다.
          • 예를 들어, 4를 2진수로 바꾼 경우 001이 temp에 들어있습니다.
          • 그렇기 때문에 value를 만들 때, 인덱스는 0부터(뒤에서부터) 시작해서
            • 0이 아닌 숫자라면, mul (10의 지수승 값을 가지는 값) 을 곱해서 value에 더해주고
            • 0이라면, test 에 value를 넣어주고, value와 mul을 초기화하면 됩니다.
      3. 쪼개진 값들 중 소수 판별하기
        • isprime 이라는 함수를 만들어서 해결하였습니다.
        • 우리가 생각하는 수학적 로직과 같은 방식으로 동작하지만, 추가로 생각할 것은
          • n 이 0인 경우도 들어올 수 있어서 if 문에서 n이 0일때 처리를 추가한 점과
          • for문에서 i*i 를 사용한 부분입니다. 
        • for문에 대해 좀 더 자세히 설명을 해보자면,
          •  이 부분은 N이라는 숫자의 가장 작은 1을 제외한 약수는 √N 이하라는 점을 이용한 것입니다.
          • 그 결과 O(N) 의 복잡도를 O(√N) 으로 바꿀 수 있게 됩니다.
          • 증명을 해보자면,
            • 1을 제외한 가장 작은 약수는 x라고 하면, x ≤ (N/x) 이 성립하게 된다. (N/x 는 x의 반대편 약수)
            • 위의 수식을 넘겨서 정리하면, x ≤ √N 이 됩니다.
    • 주의점) 아직 이 부분은 많이 부족한 부분인데, 타입에 대한 부분입니다.
      • long으로 적은 타입들을 모두 int로 하면, 11번 테케에서 실패가 떴습니다.
      • 아마도 value 계산을 하면서, 값이 커져서 그부분에서 문제가 생겼다는 생각이 들었습니다.
      • 범위를 넘어서서 문제가 생길 때를 찾는 것은 아직 어려워서 좀 더 많은 상황을 만나서 익숙해 져야 할 것 같습니다.
  • 정답 코드
#include <string>
#include <vector>
using namespace std;

bool isprime(long n)
{
    if(n == 1 || n == 0)
        return false;
    for(long i = 2; i*i <= n; ++i)
    {
        if(n % i == 0)
            return false;
    }
    return true;
}

int solution(int n, int k) 
{
    int answer = 0;
    vector<int> temp;
    vector<long> test;
    
    while(n > k)
    {
        temp.push_back(n % k);
        n /= k;
    }
    temp.push_back(n);
    
    long value = 0;
    long mul = 1;
    
    for(int i = 0; i < temp.size(); ++i)
    {
        if(temp[i] != 0)
        {
            value += temp[i] * mul;
            mul *= 10;
        }
        else if(temp[i] == 0)
        {
            test.push_back(value);
            value = 0;
            mul = 1;
        }
    }    
    test.push_back(value);
    
    for(int i = 0; i < test.size(); ++i)
    {
        if(isprime(test[i]))
        {
            answer++;
        }        
    }        
    
    return answer;
}

 

 

2. 언리얼 공부


어제 들었던 강의의 내용을 정리했습니다

  • 언리얼 엔진 클래스, 함수, 변수의 리플렉션에 대한 내용입니다.

https://gbleem.tistory.com/48

 

Unreal Engine - 클래스와 변수의 리플렉션 (매크로 지정자 위주)

이전에 관련 이론을 정리한 글https://gbleem.tistory.com/35 Unreal Property System (Reflection)참고자료https://unrealcommunity.wiki/unreal-property-system-(reflection)-36d1e6 Unreal Property System (Reflection) | Unreal Engine Community Wik

gbleem.tistory.com

  • 언리얼엔진으로 게임을 만들때 기반이 되는 GameMode, Pawn, Character 관련 내용입니다.

https://gbleem.tistory.com/49

 

Unreal Engine - GameMode, Pawn, Character

1. GameModeGameMode란게임의 전반적인 규칙과 흐름을 총괄 관리하는 컨트롤 타워 역할하는 클래스어떤 캐릭터를 스폰하는지,어떤 PlayerController를 사용할지,점수계산 방식 등의 주요 게임 플레이 로

gbleem.tistory.com

  • 언리얼 엔진5부터 생긴 input system인 Enhanced Input System 관련 내용입니다.

https://gbleem.tistory.com/50

 

Unreal Engine - Enhanced Input System (PlayerController)

1. PlayerControllerPlayerController란사용자가 키보드, 마우스, 게임 패드 등에서 입력을 받으면 해당 입력을 해석해서 캐릭터나 다른 오브젝트에게 동작을 명령하는 클래스 이다.이전에 언급한 GameMode

gbleem.tistory.com

  • Enhanced Input System는 블루프린트를 사용하여 세팅을 해 본 것이 기억나서 예전에 정리했던 글도 다시 한번 읽어보고 공부를 했습니다.

https://gbleem.tistory.com/4

 

Unreal Engine 5 TIL day 4

플레이어 캐릭터와 나만의 레벨 디자인1. Player CharacterMesh & Camera settingCharacter mesh를 선택하면, 디테일 창에 skeletal mesh를 선택할 수 있다.Camera는 Spring Arm을 먼저 만든 후 자식 컴포넌트로 Camera를

gbleem.tistory.com

  • 마지막으로 애니메이션 수업은 들었지만, 정리는 아직 못해서 내일 과제를 진행하면서 애니메이션 관련 내용을 정리해 볼 예정입니다.

'TIL' 카테고리의 다른 글

TIL day 28  (2) 2025.01.24
TIL day 27  (0) 2025.01.23
TIL day 25  (1) 2025.01.21
TIL day 23  (0) 2025.01.17
TIL day 21  (1) 2025.01.15
'TIL' 카테고리의 다른 글
  • TIL day 28
  • TIL day 27
  • TIL day 25
  • TIL day 23
gbleem
gbleem
gbleem 님의 블로그 입니다.
  • gbleem
    gbleem 님의 블로그
    gbleem
  • 전체
    오늘
    어제
    • 분류 전체보기 (184)
      • Unreal Engine (73)
      • C++ (19)
      • 알고리즘(코딩테스트) (27)
      • TIL (60)
      • CS (4)
      • 툴 (1)
  • 블로그 메뉴

    • 홈
    • 카테고리
  • 링크

    • 과제용 깃허브
    • 깃허브
    • velog
  • 공지사항

  • 인기 글

  • 태그

    applydamage
    map을 vector로 복사
    C++
    Vector
    싱글턴
    cin함수
    DP
    BFS
    motion matching
    const
    actor 클래스
    상속
    additive animation
    enhanced input system
    gamestate
    매크로 지정자
    템플릿
    addonscreendebugmessage
    blend pose
    character animation
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
gbleem
TIL day 26
상단으로

티스토리툴바