배열 array의 i번째 숫자부터 j번째 숫자까지 자르고 정렬했을 때, k번째에 있는 수를 구하려 합니다.
예를 들어 array가 [1, 5, 2, 6, 3, 7, 4], i = 2, j = 5, k = 3이라면
array의 2번째부터 5번째까지 자르면 [5, 2, 6, 3]입니다.
1에서 나온 배열을 정렬하면 [2, 3, 5, 6]입니다.
2에서 나온 배열의 3번째 숫자는 5입니다.
배열 array, [i, j, k]를 원소로 가진 2차원 배열 commands가 매개변수로 주어질 때, commands의 모든 원소에 대해 앞서 설명한 연산을 적용했을 때 나온 결과를 배열에 담아 return 하도록 solution 함수를 작성해주세요.
array | commands | return |
---|---|---|
[1, 5, 2, 6, 3, 7, 4] | [[2, 5, 3], [4, 4, 1], [1, 7, 3]] | [5, 6, 3] |
using System;
using System.Collections.Generic;
public class Solution
{
public int[] solution(int[] array, int[,] commands)
{
int commandsLength = commands.GetLength(0);
int[] answer = new int[commandsLength];
List<int> list = new List<int>();
for (int j = 0; j < commandsLength; j++)
{
for (int i = commands[j, 0] - 1; i < commands[j, 1]; i++)
{
list.Add(array[i]);
}
list.Sort();
answer[j] = list[commands[j, 2] - 1];
list.Clear();
}
return answer;
}
}
정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요.
numbers | result |
---|---|
[2,1,3,4,1] | [2,3,4,5,6,7] |
[5,0,2,7] | [2,5,7,9,12] |
using System;
using System.Collections.Generic;
using System.Linq;
public class Solution
{
public int[] solution(int[] numbers)
{
List<int> list = new List<int>();
for (int i = 0; i < numbers.Length - 1; i++)
{
for (int j = i + 1; j < numbers.Length; j++)
{
int k = numbers[i] + numbers[j];
list.Add(k);
}
}
list.Sort();
list = list.Distinct().ToList();
int[] answer = new int[list.Count];
for (int i = 0; i < list.Count; i++)
{
answer[i] = list[i];
}
return answer;
}
}
List와 사랑에 빠지고 말았다. 결국 모든 길은 List를 통하게 될 것이다.
Android build 최적화
Ios 빌드 알아보기
방어구 시스템 2트
방어구 시스템을 업데이트 중입니다.
public class ArmorSystem : MonoBehaviour
{
public ItemParts part;
private int _defense;
public QuickSlot[] _linkedSlots;
private void Awake()
{
_linkedSlots = new QuickSlot[2];
Managers.Game.Player.ToolSystem.OnEquip += DefenseOfTheEquippedArmor;
Managers.Game.Player.ToolSystem.OnUnEquip += DefenseOfTheUnEquippedArmor;
Managers.Game.Player.OnHit += Duration;
}
public void DefenseOfTheEquippedArmor(QuickSlot quickSlot)
{
ItemData armor = quickSlot.itemSlot.itemData;
EquipItemData toolItemDate = (EquipItemData)armor;
_defense += toolItemDate.defense;
Managers.Game.Player.playerDefense = _defense;
_linkedSlots[(int)toolItemDate.part] = quickSlot;
}
public void DefenseOfTheUnEquippedArmor(QuickSlot quickSlot)
{
ItemData armor = quickSlot.itemSlot.itemData;
EquipItemData toolItemDate = (EquipItemData)armor;
_defense -= toolItemDate.defense;
Managers.Game.Player.playerDefense = _defense;
_linkedSlots[(int)toolItemDate.part] = null;
}
public void Duration() // Player Hit에서 호출
{
foreach (var items in _linkedSlots)
{
Managers.Game.Player.Inventory.UseToolItemByIndex(items.targetIndex, 10);
}
}
}
public class UIArmorSlot : UIItemSlot
{
//여기선 UI적인 처리만 하기, 데이터 처리는 다른 클래스에서 . . .
//UIArmorSlot을 관리하는 객체가 이벤트 구독
//ItemData == null 이면 null인 상태의 아이콘을 그려볼까나
//UIInventory가 UIItemSlotContainer를 쓰는 것 처럼?
enum Images
{
Icon,
}
public ItemParts part;
public override void Initialize()
{
Bind<Image>(typeof(Images));
Get<Image>((int)Images.Icon).gameObject.SetActive(false);
Get<Image>((int)Images.Icon).raycastTarget = false;
}
private void Awake()
{
Initialize();
Managers.Game.Player.ToolSystem.OnEquip += EquipArmor;
Managers.Game.Player.ToolSystem.OnUnEquip += UnEquipArmor;
//Managers.Game.Player.Inventory.OnUpdated += UpdateArmorSlots;
}
public void EquipArmor(QuickSlot quickSlot)
{
int parts = GetPart(quickSlot);
if (parts == 0)
{
switch (part)
{
case ItemParts.Head:
Set(quickSlot.itemSlot);
break;
}
}
else if (parts == 1)
{
switch (part)
{
case ItemParts.Body:
Set(quickSlot.itemSlot);
break;
}
}
}
public void UnEquipArmor(QuickSlot quickSlot)
{
int parts = GetPart(quickSlot);
if (parts == 0)
{
switch (part)
{
case ItemParts.Head:
Clear();
break;
}
}
else if (parts == 1)
{
switch (part)
{
case ItemParts.Body:
Clear();
break;
}
}
}
//public void UpdateArmorSlots(int index, ItemSlot itemSlot)
//{
// var itemData = itemSlot.itemData as EquipItemData;
// int parts = (int)itemData.part;
// //itemSlot = Managers.Game.Player.Inventory.slots[index];
// if (parts == 0)
// {
// switch (part)
// {
// case ItemParts.Head:
// Clear();
// break;
// }
// }
// else if (parts == 1)
// {
// switch (part)
// {
// case ItemParts.Body:
// Clear();
// break;
// }
// }
//}
public override void Set(ItemSlot itemSlot)
{
Get<Image>((int)Images.Icon).sprite = itemSlot.itemData.iconSprite;
Get<Image>((int)Images.Icon).gameObject.SetActive(true);
}
public override void Clear()
{
Get<Image>((int)Images.Icon).gameObject.SetActive(false);
}
private int GetPart(QuickSlot slot)
{
var itemData = slot.itemSlot.itemData as EquipItemData;
if (itemData == null) return -1;
return (int)itemData.part;
}
}
public class UIArmorSlotBase : UIPopup
{
enum ArmorSlot
{
Contents,
}
public override void Initialize()
{
Bind<UIArmorSlot>(typeof(ArmorSlot));
}
private void Awake()
{
Initialize();
}
}
업데이트 중입니다.
방어구 시스템을 업데이트 중입니다.