TIL_231129

Z_제트·2023년 11월 29일
0

TODAY I LEARNED

목록 보기
23/88
post-thumbnail

to do_오늘 할 일

  • 알고리즘 문제풀기
  • 개인과제 제출

retro_오늘 한 일(회고)

궁금증 해결 ! - 코드카타를 진행하며 궁금했던 점

Q.
코드카타 알고리즘 문제풀이를 하면서
예를 들어 배열뒤집기를 해야하는 상황일 때,
기본 제공 코드에서 using System 이 없다면 using System(e.g. Array.Reverse()) 없이 구현하는 것이 옳은 방식인가요 ?
아니면 using System 을 사용해가며 상황에 맞는 메서드들을 적극적으로 사용하는 방식이 옳은 방식건가요 ?
코딩테스트 볼 때에는 어떤가요 ?

A.
using System 을 사용해가며 상황에 맞는 메서드들을 적극적으로 사용하는 것이 옳은 방식 ! using System 을 사용하는 게 반칙은 아니다 ! (C# 에서 기본으로 제공해주는 라이브러리 ? 네임스페이스 ? 를 쓰는건 문제가 없다. 단 외부에서 패키지(e.g. NuGet) 불러와서 사용하는거는 안 된다 !)


about 알고리즘 문제 자연수 뒤집어 배열로 만들기

작성 코드 ↓

using System;

public class Solution {
    public int[] solution(long n) {
        int[] answer;

        // long 을 string 으로
        string longToStr = n.ToString();

        // string 을 char array 로
        char[] ch = longToStr.ToCharArray();

        // ch array 를 뒤집기
        Array.Reverse(ch);

        // char array 를 string array 로
        string[] strArr = new string[ch.Length];

        for (int i = 0; i < ch.Length; i++)
        {
            strArr[i] = ch[i].ToString();
        }

        // string array 를 int array 로
        answer = new int[strArr.Length];

        for (int i = 0; i < strArr.Length; i++)
        {
            answer[i] = int.Parse(strArr[i]);
        }
            return answer;
    }
    
}

git 에 올린 코드에서 수정사항 :
첫 주석에서
int 를 string 으로 → long 을 string 으로 수정
변수명을
intToStr → longToStr 로 수정



이번 문제에서 활용한 것s :
ToCharArray()
Array.Reverse()


프로그래머스에서 작성한 코드를 돌려보면 통과 라고 뜨는데
Visual Studio 에서 돌려보면
System.Int32[] 를 뱉어낸다..?

원인과 해결방법을 찾아내는대로 내용 업데이트하러 오겠다 !


개인과제 README

✨Things I did :

필수요구사항

✅ 캐릭터 만들기

  • Create Empty 를 통해 Player 를 만들고 Player 에 이미지를 드래그하여 추가.

✅ 캐릭터 이동

  • InputSystem 을 사용하여 키보드 키 입력 (W(up), A(left), S(down), D(right) 와 방향키 ↑(up), ←(left), ↓(down), →(right)) 을 통해 캐릭터 이동 구현.
  • 캐릭터가 마우스 방향을 바라보도록 구현을 했는데 아직 수학적인 부분에서 공부가 더 필요한 파트다.
    다음과 같이 코드를 작성하여 구현했다.
    float rotZ = Mathf.Atan2(direction.y, direction.x) * Mathf.Rad2Deg;
    characterRenderer.flipX = Mathf.Abs(rotZ) > 90f;

✅ 방 만들기

  • Tilemap 과 2D Tile Palette 를 사용해 Floor, BackDesign, ForeDesign, Collision 구현.
  • 맵 만들 때 사용한 Assets 은 unity 게임 개발 입문 강의에서 사용한 이미지를 활용.
  • collider 를 이용해 캐릭터가 벽을 뚫고 넘어가지 못하도록 구현.

✅ 카메라 따라가기

  • Player 안에 Main Camera 를 드래그해서 넣으면 아무 문제 없이 Player 의 움직임을 잘 따라가는 것을 확인했다.
    하지만 이 방법은 확장성 측면에서 좋은 방법은 아니라고 이야기를 들어서 Package Manager - Cinemachine 을 통해 Virtual Camera 를 만들고 Player 를 Follow 하게끔 설정해서 카메라가 Player 를 따라가도록 구현했다.

📌TO-DOs :

선택요구사항

  • ⬜ 캐릭터 애니메이션 추가 - ing
  • ⬜ 이름 입력 시스템
  • ⬜ 캐릭터 선택 시스템
  • ⬜ 참석 인원 UI
  • ⬜ 인게임 캐릭터 선택
  • ⬜ 인게임 이름 바꾸기
  • ⬜ 시간 표시
  • ⬜ NPC 대화

과제 제출을 하며(a.k.a. 회고)

이번 개인과제는 첫 제출날짜에 필수요구사항을 모두 완료하고
제출할 수 있어서 아주 뿌듯하다.

저번 개인과제 때 받은 피드백을 바탕으로
이번 과제를 할 때 신경을 많이 쓴 부분은 git 을 적극적으로 이용하는 것이었다.

main 에서 branch 를 하나 따로 만들어서
거기서 commit 과 push, 그리고 merge 를 했다.
commit 할 때에는 commit 의 내용을 직관적 & 명확하게 적어보려고 노력했다.

해설강의가 올라오면 참고해서
선택요구사항도 구현해보는 것을 목표로 하고 있다 !

해설강의를 보면서 캐릭터 애니메이션을 추가했는데 플레이를 누르면 캐릭터가 깜박거리는 에러를 발견...! 서프라이즈 선물인가..? 🤪🤤

다른 조원분들은 선택요구사항까지 구현을 하셨는데
나는 배우는 속도가 비교적 느리다보니
팀과제 때 조원분들의 빠른 템포를 잘 따라갈 수 있을까
걱정이 살짝 되지만 (나중 걱정은 나중에 하기로 하고 ~)
한편으로는 대단하신 조원분들을 만나
든든하기도 하고 이번에도 배울 게 참 많겠구나 생각이 든다.

+
추가공부할 것s :

  • 유니티 스크립트 라이프 사이클 (e.g. 이벤트 함수의 실행 순서)
  • Delegate, Func, Action

profile
trying to make the world a better place with a cool head and warm heart

0개의 댓글