알고리즘 코드카타

#include <string>
#include <vector>
#include <algorithm>
using namespace std;

vector<string> solution(vector<string> strings, int n) {
    vector<string> answer = strings;
    sort(answer.begin(), answer.end(), [n](string a, string b) {
        if (a[n] == b[n])
            if (a > b) return false;
            else return true;
        if (a[n] > b[n]) return false;
        else return true;
        });

    return answer;
}

string끼리 사전순으로 비교하고 싶다면 string사이에 부등호만 넣으면 된다!

 

그냥 부등호 넣어볼까? 했는데 돼서 너무 신기..

string a = "ABCD", b = "EFG";
if (a > b)
	return true;

 

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

Unity 게임 개발 입문 시작

Rigidbody 2D에서의 Material은 Physics Material - 실질, 물질적인 재질

 

Physics Material 2D

- Friction: 미끄러짐, 번들거림 정도

- Bounciness: 반사의 정도 

 

인스펙터 - Header 사용

[Header("Ball")]
public Ball ball;

 

Pixel Per Unit (PPU)

- 1 Unit(Unity 단위)안에 몇개의 픽셀이 들어오게 할 거냐

- 기본 Square 또는 Cube(3D)가 1Unit

-> 이미지를 크게하려면 PPU를 작게, PPU가 높으면 고해상도

 

float x = Input.GetAxis("Horizontal");
float y = Input.GetAxis("Vertical");

 

GetAxisRaw

- 0, 1, -1 값만 줌, Smoothing값 X

- 동일한 속도로만 움직일 수 있게 함

float x = Input.GetAxisRaw("Horizontal");
float y = Input.GetAxisRaw("Vertical");

 

 

?: Null이 아닐때만 동작하겠다.

event: 외부에서 호출하지 못하게 막아주겠다.

public event Action<Vector2> OnMoveEvent; // Action: 값 반환X 델리게이트

public void CallMoveEvent(Vector2 direction)
{
    OnMoveEvent?.Invoke(direction);
}

 

 

Input System

패키지 매니저에서 설치 후 사용

 

 

Input - Send Message 방식

만들어 놓은 Actions(Move, Look, Fire) 앞에 On을 붙이면

이 액션이 실행될 때 이 함수를 실행하겠다는 뜻이다.

public void OnMove(InputValue value) {...}

 

- OnMove, OnLook 등의 메서드가 있으면 실행 시켜주겠다.

Send Message

 

// send Message 방식
// 옵저버 패턴
// Move가 일어날 때 구독자들에게(callmoveevent) 알려줌
public void OnMove(InputValue value)
{
    Vector2 moveInput = value.Get<Vector2>().normalized;
    CallMoveEvent(moveInput);
}

public void OnLook(InputValue value)
{
    // 마우스 position을 받아옴
    Vector2 newAim = value.Get<Vector2>();
    // 마우스 좌표(UI, screen 좌표)를 월드 좌표로 변환
    // worldPos: 마우스의 월드상 포지션
    Vector2 worldPos = _camera.ScreenToWorldPoint(newAim);
    // 월드 좌표에서 Player 좌표를 빼면
    // 월드 좌표로 향하는 값이 나옴 - 크기는 좌표를 뺀 만큼
    // 그 크기를 normalized를 통해 단위 벡터 - 방향 벡터로 만들어줌
    newAim = (worldPos - (Vector2)transform.position).normalized;

    // magnitude - 3D에서 문제 -> 속도 관련
    if (newAim.magnitude >= .9f)
        CallLookEvent(newAim);
}

 

 

옵저버 패턴(구독) 

private TopDownCharacterController _controller;
...
_controller.OnAttackEvent += OnShoot;
_controller.OnLookEvent += OnAim;
...

 

 

 

오늘 하루 회고

오늘은 새로운 팀과 만나는 날이었다.

너무 유익한 내용을 많이 안 날..