TIL day 38

2025. 2. 12. 13:07·TIL

1. 코딩테스트


오늘은 "스택" 단원을 공부하였습니다.

 

푼 문제 1) level 1 - 크레인 인형뽑기 게임

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

 

프로그래머스

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

programmers.co.kr

  • 특이한 점은 없는 문제
#include <string>
#include <vector>
#include <stack>
using namespace std;

stack<int> st;

int solution(vector<vector<int>> board, vector<int> moves) 
{
    int answer = 0;
    int colLength = board.size();
    
    for(int i = 0; i < moves.size(); ++i)
    {
        for(int x = 0; x < colLength; ++x)
        {
            if(board[x][moves[i]-1] != 0)
            {
                int cur = board[x][moves[i]-1];
                if(!st.empty() && st.top() == cur)
                {
                    st.pop();
                    answer += 2;
                }                    
                else
                    st.push(board[x][moves[i]-1]);
                
                board[x][moves[i]-1] = 0;   
                break;
            }
        }        
    }
    return answer;
}

 

푼 문제2) level 2 - 주식 가격

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

 

프로그래머스

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

programmers.co.kr

  • 생각할 것 (stack에서 중요한 테크닉)
    • 이중 for문으로 푸는 경우 이 문제는 시간초과가 발생할 것입니다.
    • 주식 가격이 떨어지는 순간을 기준으로 체크하여, 효율성을 높였습니다.
    • 흐름
      • prices 를 돌면서 stack에 현재 주식 인덱스를 넣습니다.
      • 이때 stack의 top보다 새로 넣을 주식의 가격이 작다면, pop 해주면서 길이를 구해주게 됩니다.
      • 이 과정이 모두 끝나고 stack에 남은 것들은 끝날 때 까지 가격이 줄어들지 않은 것이기 때문에 마지막 while문을 통해서 길이를 구해주면 됩니다.
    • 스택 테크닉
      • stack의 top과 특정 값을 비교하면서, top을 갱신하기
      • 인덱스 간의 차이로 길이 구하기
#include <string>
#include <vector>
#include <stack>
using namespace std;

vector<int> solution(vector<int> prices) 
{
    vector<int> answer(prices.size());
    stack<int> st;
    
    for(int i = 0; i < prices.size(); ++i)
    {
        while(!st.empty() && prices[st.top()] > prices[i]) //가장 최근에 넣은 값보다 작은 값이 등장할때
        {
            answer[st.top()] = i - st.top();
            st.pop();
        }
        st.push(i);
    }
    while(!st.empty())
    {
        answer[st.top()] = prices.size() - 1 - st.top();
        st.pop();
    }
    
    return answer;
}

동작하는 모습

2. 알고리즘


알고리즘에서 쓰는 함수를 배워서 써보면서 정리를 하였습니다.

 

https://gbleem.tistory.com/77

 

3. 언리얼


과제를 진행하면서, UI 만들기에 대한 내용을 정리하였습니다.

  • 기본 HUD 만들기
    • 점수와 현재 레벨, 남은 시간을 표시할 때 사용할 UI를 만들었습니다.

https://gbleem.tistory.com/78

 

Unreal Engine - 간단한 UI 만들기 (HUD)

1. 기본 세팅위젯 블루프린트 선택 후 -> 사용자 위젯 선택디자이너 탭팔레트 -> 패널 -> 캔버스 패널 추가추가적으로 아래와 같이 화면 크기를 조절하여, 우리가 구현하고자 하는 게임에 사이즈

gbleem.tistory.com

  • Main Menu 만들기
    • 게임을 시작하고, 끝나면 재시작 하는 동작을 합니다.

https://gbleem.tistory.com/79

 

Unreal Engine - Main Menu UI (Start, Restart)

1. 디자이너 탭 구성아래와 같은 계층구조로 구성  2. Menu  전용 맵게임이 시작하면 Menu Level에서 위에서 만든 UI가 실행된 후 Start 버튼을 누르면 게임이 시작되는 로직으로 제작할 것이다.새로

gbleem.tistory.com

  • UI 애니메이션 만들기
    • 시간이 줄어드는 것을 bar 형태로 만든 후
    • 시간이 얼마 남지 않았을 때 bar가 움직이면서 긴박감을 주는 UI를 구현하였습니다.

https://gbleem.tistory.com/80

 

Unreal Engine - UI Animation

progress bar를 통해 구현한 타이머 UI의 시간이 일정 시간보다 적어진 경우 애니메이션을 실행하는 것을 구현한 내용이다.1. BP에서 애니메이션 생성 (디자이너 탭)애니메이션을 주고 싶은 UI를 클릭

gbleem.tistory.com

  • 3D UI
    • 캐릭터가 특정 아이템을 먹었을 때, 효과가 적용되는 시간동안 상태를 나타내기 위한 UI를 구현하였습니다.

https://gbleem.tistory.com/81

 

Unreal Engine - 3D UI

캐릭터가 특정 아이템을 먹으면, 이미지 UI가 뜨고 해당 효과가 사라지면 UI가 보이지 않도록 하는 것을 구현할 것이다.1. Widget BP 만들기유저인터페이스 -> 위젯블루프린트 -> 사용자 위젯 -> 원하

gbleem.tistory.com

 

'TIL' 카테고리의 다른 글

TIL day 40  (0) 2025.02.14
TIL day 39  (0) 2025.02.13
TIL day 37  (1) 2025.02.11
TIL day 36  (0) 2025.02.10
TIL day 35  (2) 2025.02.07
'TIL' 카테고리의 다른 글
  • TIL day 40
  • TIL day 39
  • TIL day 37
  • TIL day 36
gbleem
gbleem
gbleem 님의 블로그 입니다.
  • gbleem
    gbleem 님의 블로그
    gbleem
  • 전체
    오늘
    어제
    • 분류 전체보기 (184)
      • Unreal Engine (73)
      • C++ (19)
      • 알고리즘(코딩테스트) (27)
      • TIL (60)
      • CS (4)
      • 툴 (1)
  • 블로그 메뉴

    • 홈
    • 카테고리
  • 링크

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

  • 인기 글

  • 태그

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

  • 최근 글

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

티스토리툴바