코드카타-햄버거 만들기

#include <vector>
using namespace std;
int solution(vector<int> ingredient) {
int answer = 0;
vector<int> st;
st.reserve(ingredient.size()); // 성능에 도움
for (int x : ingredient) {
st.push_back(x);
// st 크기가 4 이상일 때만 검사
if (st.size() >= 4) {
int n = (int)st.size();
// TODO: 아래 조건을 채우세요 (끝 4개가 1,2,3,1인지)
bool isBurger =
(st[n - 4] == 1) &&
(st[n - 3] == 2) &&
(st[n - 2] == 3) &&
(st[n - 1] == 1);
if (isBurger) {
// TODO: 4개 제거
st.pop_back();
st.pop_back();
st.pop_back();
st.pop_back();
answer++;
}
}
}
return answer;
}
분반 수업
더보기
// Fill out your copyright notice in the Description page of Project Settings.
#pragma once
#include "CoreMinimal.h"
#include "GameFramework/Character.h"
#include "InputActionValue.h"
#include "PlayerCharacterBase.generated.h"
UENUM(BlueprintType)
enum class EPlayerStates : uint8
{
NONE UMETA(DisplayName = "NONE"),
ATTACK UMETA(DisplayName = "ATTACK"),
RUN UMETA(DisplayName = "RUN"),
};
UENUM(BlueprintType)
enum class EWeaponType : uint8
{
NONE UMETA(DisplayName = "NONE"),
SWORD UMETA(DisplayName = "SWORD"),
SMALL_KNIFE UMETA(DisplayName = "SMALL_KNIFE")
};
UCLASS()
class DARK_SOUL_Z_API APlayerCharacterBase : public ACharacter
{
GENERATED_BODY()
public:
APlayerCharacterBase();
protected:
virtual void BeginPlay() override;
public:
virtual void Tick(float DeltaTime) override;
virtual void SetupPlayerInputComponent(class UInputComponent* PlayerInputComponent) override;
protected:
UPROPERTY(EditAnywhere)
class USpringArmComponent* SpringArm;
UPROPERTY(EditAnywhere)
class UCameraComponent* Camera;
private:
void InitializationPlayerMesh();
void InitializationWeaponMesh();
void InitializationPlayerCamera();
void InitializationInput();
void Move(const FInputActionValue& Value);
void Look(const FInputActionValue& Value);
void Attack();
void WeaponChange();
private:
UPROPERTY(VisibleAnywhere, Category = "Input")
class UInputMappingContext* DefaultContext;
UPROPERTY(VisibleAnywhere, Category = "Input")
class UInputAction* MoveAction;
UPROPERTY(VisibleAnywhere, Category = "Input")
class UInputAction* LookAction;
UPROPERTY(VisibleAnywhere, Category = "Input")
class UInputAction* AttackAction;
UPROPERTY(VisibleAnywhere, Category = "Input")
class UInputAction* WeaponChangeAction;
public:
UPROPERTY(VisibleAnywhere)
bool bIsSWORDWeaponChange; //1번키 무기 상태
UPROPERTY(EditAnywhere)
float mouseSpeed = 30.0f;
UPROPERTY(EditAnywhere)
float playerMoveSpeed = 600.0f;
private:
UPROPERTY(EditAnywhere)
class UStaticMeshComponent* weaponStaticMesh;
private:
UPROPERTY(EditAnywhere)
UAnimMontage* AttackMontage;
public:
EPlayerStates playerState = EPlayerStates::NONE;
EWeaponType weaponType = EWeaponType::NONE;
public:
UPROPERTY(EditAnywhere, Category = "Sounds")
USoundBase* AttackSound;
};
// Fill out your copyright notice in the Description page of Project Settings.
#include "Player/PlayerCharacterBase.h"
#include "GameFramework/SpringArmComponent.h"
#include "Camera/CameraComponent.h"
#include "EnhancedInputComponent.h"
#include "InputMappingContext.h"
#include "EnhancedInputSubsystems.h"
#include "Engine/Engine.h"
#include "Kismet/KismetMathLibrary.h"
#include "GameFramework/CharacterMovementComponent.h"
#include "TimerManager.h"
#include "Engine/World.h"
#include "Kismet/GameplayStatics.h"
APlayerCharacterBase::APlayerCharacterBase()
{
PrimaryActorTick.bCanEverTick = true;
InitializationPlayerMesh();
InitializationPlayerCamera();
InitializationInput();
InitializationWeaponMesh();
static ConstructorHelpers::FClassFinder<UAnimInstance> AnimInstance(TEXT("/Game/DarkSoulZ/Blueprints/Player/ABP_Player.ABP_Player_C"));
if (AnimInstance.Class)
{
GetMesh()->SetAnimInstanceClass(AnimInstance.Class);
}
}
void APlayerCharacterBase::BeginPlay()
{
Super::BeginPlay();
if (APlayerController* PlayerController = Cast<APlayerController>(GetController()))
{
if (UEnhancedInputLocalPlayerSubsystem* SubSystem = ULocalPlayer::GetSubsystem<UEnhancedInputLocalPlayerSubsystem>(PlayerController->GetLocalPlayer()))
{
SubSystem->AddMappingContext(DefaultContext, 0);
}
}
GetCharacterMovement()->MaxWalkSpeed = playerMoveSpeed;
}
void APlayerCharacterBase::Tick(float DeltaTime)
{
Super::Tick(DeltaTime);
}
void APlayerCharacterBase::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)
{
Super::SetupPlayerInputComponent(PlayerInputComponent);
UEnhancedInputComponent* EnhancedInputComponent = Cast<UEnhancedInputComponent>(PlayerInputComponent);
EnhancedInputComponent->BindAction(MoveAction, ETriggerEvent::Triggered, this, &APlayerCharacterBase::Move);
EnhancedInputComponent->BindAction(LookAction, ETriggerEvent::Triggered, this, &APlayerCharacterBase::Look);
EnhancedInputComponent->BindAction(AttackAction, ETriggerEvent::Started, this, &APlayerCharacterBase::Attack);
EnhancedInputComponent->BindAction(WeaponChangeAction, ETriggerEvent::Started, this, &APlayerCharacterBase::WeaponChange);
}
void APlayerCharacterBase::InitializationPlayerMesh()
{
ConstructorHelpers::FObjectFinder<USkeletalMesh>
PlayerSkeletalMesh(TEXT("/Script/Engine.SkeletalMesh'/Game/Characters/Mannequins/Meshes/SKM_Manny_Simple.SKM_Manny_Simple'"));
if (PlayerSkeletalMesh.Succeeded())
{
GetMesh()->SetSkeletalMesh(PlayerSkeletalMesh.Object);
GetMesh()->SetWorldLocationAndRotation(FVector(0, 0, -90), FRotator(0, -90, 0));
}
}
void APlayerCharacterBase::InitializationWeaponMesh()
{
weaponStaticMesh = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("long_sword"));
weaponStaticMesh->SetupAttachment(RootComponent);
static ConstructorHelpers::FObjectFinder<UStaticMesh> weapon(TEXT("/Script/Engine.StaticMesh'/Game/DarkSoulZ/Asset/Weapons/Medieval_Long_Sword/long_sword/StaticMeshes/long_sword.long_sword'"));
if (weapon.Succeeded())
{
weaponStaticMesh->SetStaticMesh(weapon.Object);
}
if (weaponStaticMesh)
{
weaponStaticMesh->AttachToComponent(GetMesh(), FAttachmentTransformRules::KeepRelativeTransform, TEXT("weapon_Socket"));
weaponStaticMesh->SetVisibility(false);
}
}
void APlayerCharacterBase::InitializationPlayerCamera()
{
bUseControllerRotationYaw = false;
UCharacterMovementComponent* MoveComp = GetCharacterMovement();
if (MoveComp)
{
MoveComp->bOrientRotationToMovement = true;
}
SpringArm = CreateDefaultSubobject<USpringArmComponent>(TEXT("SpringArm"));
if (SpringArm)
{
SpringArm->SetupAttachment(RootComponent);
SpringArm->SetWorldLocation(FVector(0, 0, 40));
SpringArm->TargetArmLength = 350;
SpringArm->SocketOffset = FVector(0, 0, 35);
SpringArm->bUsePawnControlRotation = true;
}
Camera = CreateDefaultSubobject<UCameraComponent>(TEXT("Camera"));
if (Camera)
{
Camera->SetupAttachment(SpringArm);
}
}
void APlayerCharacterBase::InitializationInput()
{
static ConstructorHelpers::FObjectFinder<UInputMappingContext> InputContext(TEXT("/Script/EnhancedInput.InputMappingContext'/Game/DarkSoulZ/Input/IMC_Default.IMC_Default'"));
if (InputContext.Object != nullptr)
{
DefaultContext = InputContext.Object;
}
static ConstructorHelpers::FObjectFinder <UInputAction> InputMove(TEXT("/Script/EnhancedInput.InputAction'/Game/DarkSoulZ/Input/Actions/IA_Move.IA_Move'"));
if (InputMove.Object != nullptr)
{
MoveAction = InputMove.Object;
}
static ConstructorHelpers::FObjectFinder <UInputAction> InputLook(TEXT("/Script/EnhancedInput.InputAction'/Game/DarkSoulZ/Input/Actions/IA_Look.IA_Look'"));
if (InputLook.Object != nullptr)
{
LookAction = InputLook.Object;
}
static ConstructorHelpers::FObjectFinder <UInputAction> InputAttack(TEXT("/Script/EnhancedInput.InputAction'/Game/DarkSoulZ/Input/Actions/IA_Attack.IA_Attack'"));
if (InputAttack.Object != nullptr)
{
AttackAction = InputAttack.Object;
}
static ConstructorHelpers::FObjectFinder <UInputAction> InputWeaponChange(TEXT("/Script/EnhancedInput.InputAction'/Game/DarkSoulZ/Input/Actions/IA_WeaponChange.IA_WeaponChange'"));
if (InputWeaponChange.Object != nullptr)
{
WeaponChangeAction = InputWeaponChange.Object;
}
}
void APlayerCharacterBase::Move(const FInputActionValue& Value)
{
if (playerState == EPlayerStates::ATTACK) return;
const FVector2D Movement = Value.Get<FVector2D>(); // X : 좌/우 , Y : 앞/뒤
const FRotator ControlRot = Controller ? Controller->GetControlRotation() : FRotator::ZeroRotator;
const FRotator YawOnly(0.f, ControlRot.Yaw, 0.f);
const FVector Forward = UKismetMathLibrary::GetForwardVector(YawOnly);
const FVector Right = UKismetMathLibrary::GetRightVector(YawOnly);
AddMovementInput(Forward, Movement.Y);
AddMovementInput(Right, Movement.X);
}
void APlayerCharacterBase::Look(const FInputActionValue& Value)
{
FVector2D LookAxisVector = Value.Get<FVector2D>();
AddControllerYawInput(LookAxisVector.X * GetWorld()->DeltaTimeSeconds * mouseSpeed);
AddControllerPitchInput(LookAxisVector.Y * GetWorld()->DeltaRealTimeSeconds * mouseSpeed);
}
void APlayerCharacterBase::Attack()
{
if (weaponType == EWeaponType::NONE)
return;
playerState = EPlayerStates::ATTACK;
UAnimInstance* AnimInstance = GetMesh()->GetAnimInstance();
if (AttackMontage)
{
AnimInstance->Montage_Play(AttackMontage);
}
//람다 형식 : [캡처리스트](매개변수)->반환형 {실행코드};
FTimerHandle AttackHandle;
GetWorld()->GetTimerManager().SetTimer(
AttackHandle,
[this]()
{
playerState = EPlayerStates::NONE;
}, 1.5f,
false);
}
void APlayerCharacterBase::WeaponChange()
{
bIsSWORDWeaponChange = !bIsSWORDWeaponChange;
bIsSWORDWeaponChange ? weaponType = EWeaponType::SWORD : weaponType = EWeaponType::NONE;
if (weaponStaticMesh)
{
weaponStaticMesh->SetVisibility(bIsSWORDWeaponChange);
}
}
숫자야구 과제 근황
오늘은 컨디션 난조로 쉬기로 하였다.
남은 3일 동안 잘 해내야겠다.
'TIL' 카테고리의 다른 글
| 3/18일자 TIL (0) | 2026.03.18 |
|---|---|
| 3월 17일자 TIL (0) | 2026.03.17 |
| 3월 13일자 TIL (1) | 2026.03.13 |
| 3/12일자 TIL (0) | 2026.03.12 |
| 3/11일자 TIL (0) | 2026.03.11 |