내일배움캠프 Node.js 본캠프 52일차

김선우·2024년 10월 23일
post-thumbnail

알고리즘 문제 풀어보기

카펫

문제 설명

Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 노란색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다.

Leo는 집으로 돌아와서 아까 본 카펫의 노란색과 갈색으로 색칠된 격자의 개수는 기억했지만, 전체 카펫의 크기는 기억하지 못했습니다.

Leo가 본 카펫에서 갈색 격자의 수 brown, 노란색 격자의 수 yellow가 매개변수로 주어질 때 카펫의 가로, 세로 크기를 순서대로 배열에 담아 return 하도록 solution 함수를 작성해주세요.

제한사항

갈색 격자의 수 brown은 8 이상 5,000 이하인 자연수입니다.
노란색 격자의 수 yellow는 1 이상 2,000,000 이하인 자연수입니다.
카펫의 가로 길이는 세로 길이와 같거나, 세로 길이보다 깁니다.

풀이 코드

function solution(brown, yellow) {
    var answer = [];
    var sum = brown + yellow;
    
    for( y = 3; y <= brown; y++ ){
        if(sum % y === 0){
            var x = sum / y;
            if( (y - 2) * (x - 2) === yellow){
                return [x, y];
            }
        }
    }
    return answer;
}

풀이 과정

갈색으로 둘러쌓이고 가운데가 노란색이므로 카펫의 최소 높이는 3이다. 이때 높이값이 증가하는 반복문에서 brown과 yellow값을 합한 값을 높이값으로 나눳을때 나머지가 0이면 가로값은 더한값 / 높이값이 된다.
yellow는 중앙에 칠해져있기 때문에 가로와 세로값을 -2해주고 곱했을때 값이 yellow와 같다면 바로 가로길이와 높이를 return해준다.

유니티

Unity?

Unity는 게임 개발자들이 게임을 디자인, 개발, 배포하기 위한 강력한 도구와 기능을 제공하여 게임 개발 과정을 간소화하고 가속화하는 데 도움을 주는 인기 있는 게임 개발 엔진이다.
유니티 엔진이 나오기 전까지는 게임 회사들마다 개발하고자 하는 게임에 맞는 게임 엔진을 실제로 먼저 만들고 나서 본격적인 게임 개발에 들어감.
=> 게임 엔진 개발 시간도 오래 걸리고 프로젝트를 진행하다 보면 미리 만들어둔 게임 엔진이 현재 프로젝트와 결이 맞지 않는 경우도 많이 발생함.

게임 엔진

  • 게임 개발을 위한 소프트웨어 플랫폼
  • 게임 개발자들이 게임을 디자인, 개발, 배포하기 위한 기능과 도구 제공
  • 그래픽, 물리, 사운드, 애니메이션, 인공지능 등 다양한 요소 관리 및 통합
  • 게임 개발 과정을 간소화하고 가속화

Unity

  • 게임 개발 및 시뮬레이션을 위한 통합 개발 환경(IDE)
  • 2D 및 3D 게임 개발을 지원
  • 다양한 플랫폼에서 실행 가능한 게임 개발(Android, IOS, PC, Console...)
  • 사용자 친화적인 인터페이스와 강력한 기능 제공.
  • 크로스 플랫폼 개발, 실시간 미리보기, 2D/3D 그래픽 지원, 물리 시뮬레이션, 스크립팅 언어, 에셋 스토어, 커뮤니티 및 문서화 등 기능 제공.

Visual Studio

  • 마이크로소프트에서 개발한 통합 개발 환경(IDE)
  • 코드 편집기와 디버깅 도구, 빌드 시스템 등을 포함하여 개발에 필요한 다양한 기능 제공.
  • 강력한 IntelliSense 기능으로 코드 작성 시 자동 완성, 신택스 하이라이팅, 오류 체크 등을 제공.
  • 통합된 디버깅 환경으로 코드 실행 중에 문제를 분석하고 수정할 수 있음.

Unity 사용 사례

유니티는 게임 엔진으로만 사용되는 것이 아니라 산업환경, 교육환경, 임베디드환경등 다양한 환경에서 사용되고있음.

에셋, 씬, 게임 오브젝트의 개념 및 관계

  • 에셋(Asset)
    • 게임에 필요한 모든 리소스(이미지, 사운드, 모델, 코드 등)를 의미.
    • 프로젝트의 에셋 폴더에 저장되며, 유니티에서 사용 가능한 형식으로 가져와서 게임에 활용.
  • 씬(Scene)
    • 게임의 각 장면 또는 화면을 의미.
    • 유니티에서 게임은 하나 이상의 씬으로 구성되며, 각 씬은 게임의 특정 부분을 담당.
    • 예를 들어, 메뉴 씬, 게임 플레이 씬, 엔딩 씬 등으로 구성.
  • 게임 오브젝트(GameObject)
    • 씬에 배치되는 모든 요소를 의미.
    • 게임 오브젝트는 에셋을 이용하여 씬에 생성되며, 게임의 동작과 상호작용을 담당.
    • 예를 들어, 캐릭터, NPC, 아이템, 장애물 등이 게임 오브젝트.
    • 게임 오브젝트는 계층 구조로 구성되어 부모-자식 관계를 가지며, 이를 통해 그룹화하고 조작.

UGUI

  • GUI는 Graphical User Interface로 그래픽으로 화면에 구현된 유저 인터페이스. => UGUI는 유니티에서 지원하는 GUI 시스템.
  • Unity UI는 게임 및 애플리케이션용 사용자 인터페이스를 개발하기 위한 UI 툴킷으로, 컴포넌트와 게임 뷰를 사용하여 사용자 인터페이스를 정렬, 위치 지정 및 스타일 지정하는 GameObject 기반 UI 시스템임. Unity UI를 사용하여 Unity 에디터에서 사용자 인터페이스를 만들거나 변경할 수 없음.

0개의 댓글