목록전체 글 (179)
有希
여러 문자열이 벡터로 들어올 때, 그 녀석들의 가장 긴 접두어?를 찾는 것이다. 예시에 나와있듯이 flower, flow, flight에서 처음부터 시작해서 가장 긴 공통알파벳모음?은 fl이다. 우리가 이걸 찾는 과정을 그대로 따라 구현했다. flower에서 처음에 f니까, 나머지 단어들도 f로 시작하는지 보고.. flower에서 다음이 L이니까 나머지 단어들도 L로 시작하는지 보고.. class Solution { public: string longestCommonPrefix(vector& strs) { int min = INT_MAX; string ret = ""; for (int i = 0; i < strs.size(); ++i) { if (strs[i].size() < min) min = strs..
못풀고 낑낑대다가 해답에 손을 대고 말았다. 핵심은 '연속된 두 수를 비교했을 때, 작은 숫자가 앞에 온다면' 이다. 이런 경우에만 뒤쪽 수 - 앞쪽 수 한다. (IV = 5-1) 와 같이... 당연히 숫자 2개를 비교하니 루프는 사이즈-1 까지만 돌리고 마지막 숫자는 얄짤없이 더하는 숫자이니 그냥 더하면 된다. class Solution { public: int romanToInt(string s) { int sz = s.size(); //만약 길이가 1일 경우에는 맞는 숫자 찾아서 반환하면 된다. if (s.size() == 1) return hmap[s[0]]; int sum = 0; for (int i = 0; i < sz - 1; ++i) { int curNum = hmap[s[i]]; if (..
가운데 숫자를 기준으로 앞으로 읽으나 뒤로 읽으나 같은 수를 팰린드롬 숫자 라고 한댄다. 처음에는 문제를 잘못 이해하고, 가운데를 기준으로 했을 때 좌우가 같아야 한다고 생각하고 풀었다 ㅡㅡ; 24ms에 10MB 사용 class Solution { public: bool isPalindrome(int x) { //음수는 무조건 아니다 if (x < 0) return false; vector nums; while (x != 0) { nums.push_back(x % 10); x /= 10; } int loop = nums.size(); cout
올바른 자료구조를 사용할 수 있는지 묻는 문제 같다. 거꾸로니까 선입말출? 정도가 되겠다. queue를 사용하면 될듯.(%10으로 1자리부터 넣은다음 앞에서부터 빼면 거꾸로가 된다.) 혹은 while로 처리하던가. class Solution { public: int reverse(int x) { int ret=0; while(x!=0) { int pop = x%10; x/=10; if(ret>INT_MAX/10 || (ret==INT_MAX/10 && pop > 7)) return 0; if(ret INT_MAX / 10 || (ret == INT_MAX / 10 && q.front() > 7)) return 0; if (ret < INT_MIN / 10 || (ret == INT_MIN / 10 && ..
class Solution { public: vector twoSum(vector& nums, int target) { vector ret; for(int i=0; i
게임 내 화면을 보여주는 녀석 디아블로 같은 게임을 보면 카메라가 플레이어를 따라다니는데, Camera Controller를 따로 사용하어 셜정한다. Controller - Camera의 관계로 엮어주어 Controller에 player캐릭터를 붙여 해당 캐릭터의 상대 좌표로 이동하도록 하는 update() 함수를 수정하면 된다. void Update() { transform.position = _player.transform.position + _delta; } _delta는 플레이어로부터의 원하는 카메라 위치로의 벡터이다. 카메라 위치가 플레이어로부터 _delta만큼 떨어져 있다고 보면 될듯. 이걸 실행하다보면 카메라가 분명 캐릭터를 따라가는데, 캐릭터가 부드부들 거리는게 보일 것이다. 이 문제는 캐..
말 그대로, 광선을 쏜다.(엑스칼리버) 게임 속 세상은 3D인데, 화면은 2D이다. 그래서 화면에서 딱 클릭했을 때, 3D세상 속의 물체를 선택하기 위해 사용한다. 광선을 쏴서 충돌하는 물체가 있는지 없는지 판단한다. 광선이 Collider컴포넌트를 가진 녀석과 충돌하면 이벤트를 처리한다. Physics.Raycast를 사용하면 여러 물체가 광선 상에 있을 때 하나의 물체에 대해서만(가장 앞 녀석) 충돌을 처리하고, 뒤에것으로는 뚫지 못한다. Physics.RaycastAll을 사용하면 전부다 뚫고, 결과 또한 배열로 받아주어야 한다. 아래는 예시 코드 void Update() { //캐릭터가 보는 방향 얻어내기 Vector3 look = transform.TransformDirection(Vector3..
[Collision] 객체와 객체가 서로 닿았다는 개념. 게임에 있어서 충돌은 중요하다 [RigidBody] Unity에서 물리를 적용받기 위해 붙여줘야 하는 Component. isKinematic을 키면 충돌이 안되는데, Rigidbody와 isKinematic을 함께 사용하는 경우는 칼로 몬스터를 썬다거나 할 때 충돌은 하지않으면서 '충돌했다는 사실'을 가지고 이벤트를 처리하기 위해 사용한다.' 여러 속성 중 궁금했던 속성들을 사용해보고 대충 해석해봤다. -UseGravity: 중력 적용 여부 -FreezeRotation: Cube같은 다른 RigidBody와 조작하는 Object가 충돌하였을때, UnityChan같은 경우에는 부들부들 떠는 모습이 보이는데, 이는 회전을 하기 때문이고 x,y,z에 ..
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진 대시보드 - 인프런 | 강의 (inflearn.com) [C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진 - 인프런 | 강의 유니티 엔진 사용법 및 제공하는 기능들에 대해 알아보고, 그것을 효율적으로 관리하는 방법을 배우는 강의입니다., MMORPG 개발에 필요한 모든 기술, C# + Unity로 Step By Step! 🕹️ [사진] 기초부터 www.inflearn.com Rookiss님의 Unity강좌를 공부하며 정리하는 블로그입니다. 자세한 코드나 설명의 경우에는 해당 강좌를 구매하여 주세요!