TIL (since 2023.08.07 ~ )

2023-09-19 TIL(행렬의 덧셈, 개인 프로젝트 시작)

Bastian바스티언 2023. 9. 19. 22:02

code kata

 

<행렬의 덧셈>

행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 행, 같은 열의 값을 서로 더한 결과가 됩니다.
2개의 행렬 arr1과 arr2를 입력받아, 행렬 덧셈의 결과를 반환하는 함수, solution을 완성해주세요.

<제한 조건>
- 행렬 arr1, arr2의 행과 열의 길이는 500을 넘지 않습니다.

 

<brainstorming>

행렬의 원소끼리 더하는 것은 예전에 과제를 하면서 다뤘던 기억이 있지만 자세히 기억이 안나서 다시 찾아보았다.

 

하지만 해결을 하진 못했다. 우선 스스로 생각하면서 짤 수 있던 부분은 반복문 정도까지 였는데, 자꾸 에러가 나서

 

결국 구글링을 통해 작성하였다. 하지만 아직은 생소해 보이는 문법이 등장했다. 

public class Solution {
    public int[,] solution(int[,] arr1, int[,] arr2) {
        int[,] answer = new int[arr1.GetLength(0), arr1.GetLength(1)];
        for(int i = 0; i < arr1.GetLength(0); i++)
        {
            for(int j = 0; j < arr1.GetLength(1); j++)
            {
                answer[i, j] = arr1[i, j] + arr2[i, j];
            }
        }

        return answer;
    }
}

 

 

 

 

 

<다른 사람의 풀이>

using System;
public class Solution {
    public int[,] solution(int[,] arr1, int[,] arr2) {
        int[,] answer = (int[,])arr1.Clone();
        for(int i = 0; i < arr1.GetLength(0); i++){
            for(int j = 0; j < arr1.GetLength(1); j++){
                answer[i, j] += arr2[i, j];
            }
        }
        return answer;
    }
}

 

 


개인 프로젝트

오늘부터 다시 개인프로젝트를 시작하였다. 팀프로젝트가 끝난지 얼마 안되기도 했고 들을 강의도 많았지만...

 

오늘 시작을 안하면 정말 마무리를 못지을 것 같아서 불안한 마음에 일단 개인과제부터 먼저 끝내고

 

남는 시간에 강의를 들으면서 공부를 하는게 낫겠다 싶었다. 개인과제는 물론 '난이도 - 하' 를 하기로 했다.

 

난이도-하 과제는 ATM 시스템을 만드는 것이었다. 주로 UI와 기본적인 객체 간 연산을 연습하는 목적이다.

 

지난 팀 프로젝트에서 했던 역할이 UI 였던지라 다시 한 번 더 복습한다는 느낌으로 하면 될 듯 하다.

최대한 발제 내용에 근거하여 만들어 보았다. 

 

입금과 출금은 Button UI 를 사용하고, 좌측의 현금은 지난번에 써보려다 못했던 Panel UI 를 사용해 보았다.

 

처음에는 Square Sprites를 사용할까 싶었지만 무슨일에선지 계속 캔버스 아래에서 바깥으로 나오질 못했고,

 

사이즈도 맞추기 어려워서 고민하던 찰나에 Panel 이라는 UI 에 대해서 생각나서 넣어봤는데 딱 원하는 디자인이 나왔다.

 

 

입금 버튼을 눌렀을 때 전화되도록 버튼에 우선 기능을 넣는 것 까지는 할 수 있을 것 같아서 구현해 보았다.

 

Button UI 에 탑재되어 있는 기능인 On Click() 에서 버튼을 눌렀을 때 입금에 관련된 UI 창이 나오도록

 

전환되기 위해서 UI 를 크게 (1) MainMenu, (2) InputChange, (3) OutputChange 세 가지 오브젝트로 나누어서 관리했다.

 

그리고 기본화면에서는 MainMenu를 제외한 UI 들은 비활성화를 시켜 둔 다음 버튼을 눌렀을 때 활성화 되도록 

 

SetActive (bool) 의 기능을 추가하여 관리하도록 하였다.

 

 

출금 버튼을 눌렀을 때도 똑같은 원리로 작동하도록 만들었다. 그리고 enter text 부분은 UGUI 중에서 Input Feild 를 사용

 

하면 원하는 디자인에 기능까지 갖춘 입력이 가능한 UI 박스가 생성된다.

 

 

지난번 팀 프로젝트에서 스스로 공부하면서 학습했던 부분이라 그런지 크게 헤매지 않고 만들었다.

 

조금씩이지만 이렇게 쌓여가는 경험이 도움이 된다는 것을 느꼈고 많은 경험을 통해서 빨리 성장하고 싶은 욕심이 생긴다.

 

오늘은 우선 기본적인 UI 틀만 만들어놓고, 내일은 다른 요구사항중 ATM 기능을 할 수 있도록 기능적인 부분을 설계해야

 

겠다.

 


 

Unity 게임 개발 숙련 주차

 

아직 해당 공부한 내용에 대해서 정리를 시작하진 않았지만 실습을 하던 중 꼭 적어둬야 할 것 같은 부분에 대해서만

 

정리를 하고자 한다.

 

① 먼저 참조 방식이었는데, 선언된 컨텍스트의 위치를 잘 알고 있어야 클래스를 참조하였을 때

 

오류가 나지 않는다는 것이었다. 여러 Event 를 담당하고 있던 부분은 CharaterController 부분이었지만, 

 

내가 참조한 클래스는 Animation 이었다. 해당 부분은 아무래도 직접타이핑을 하면서 자동완성 부분을

 

잘못 작성 해 버려서 그런것 같다. 자동완성이 되더라도 확인을 하는 것이 중요하다는 것을 배웠다.

 

 

② 두 번째는 애니메이션 부분을 실습하면서 생긴 문제였는데, 애니메이션 창을 열었을 때

 

강의에서는 sample 탭이 존재했는데 내 화면에서는 보이질 않았다. 그리고 애니메이션을 재생하면 속도가 너무 빨라서 

 

아무리 간격을 넓게 해도 1초면 금방 애니메이션이 후다닥 끝나버렸었다. 결국 sample 부분을 찾다가 발견하질 못해서

 

튜터님께 질문하러 갔었는데, 생각보다 간단했다. 

 

애니메이션 창에서 오른쪽 구석에 작은 동그라미 세 개가 그려진 부분을 누르면

 

이렇게 sample rate 를 다시 활성화 할 수 있다. 그리고 samples 을 60이었던 것을 12로 조정하고 나니 애니메이션이 원하

 

는대로 잘 작동했다.