비트를 쪼개는 개발자

allen321@naver.com

분류 전체보기 82

Unity에서 Firebase를 이용해 실시간으로 DB를 연동해보기 (1)

Firebase란? Firebase는 구글에서 제공하는 모바일이나 웹용 애플리케이션 개발을 위한 개발 플랫폼이다.여러가지 기능들을 제공하며 실시간 데이터베이스, 인증, 클라우드 스토리지 등 서버를 직접 구축할 필요 없이 백엔드의 여러 기능을 사용할 수 있다.무료로 제공하는 기본 용량이 있어 접근성이 편리하다.    우리는 Firebase의 다음과 같은 기능 중 데이터베이스 기능을 Unity와 연동시켜보자. Unity로 게임을 개발하다 보면 여러가지 기능을 DB와 연동시킬 필요성이 느껴진다. 캐릭터의 레벨이나 재화, 그리고 로그인 시스템, 인벤토리 등 여러가지 기능들을 실시간으로 서버와 연동하고 이를 수시로 받아오고 쓰는 과정이 필연적으로 발생하는데 Firebase를 사용하면 이러한 기능들을 간단하게나마 ..

Unity 2025.02.04

C# [프로그래머스] 멀리 뛰기

문제 설명 효진이는 한 번에 1칸 혹은 2칸을 점프 할 수 있음n개의 칸이 주어졌고, 마지막 칸에 도달할 때 발생하는 경우의 수를 따져야 함결과로 나온 값에 1234567로 나눈 나머지 값을 return하는 함수를 완성해야 함 문제의 요지 자체는 간단하지만 오버플로우와 경우의 수가 많아지기 쉬운 케이스라고 생각했다. 문제를 풀다보니 칸 수가 증가하면서 늘어나는 값이 피보나치 수열과 거의 흡사하다는 것을 발견했고 이와 비슷하게 문제를 풀어냈다. 더보기n=1: 1가지 [1] n=2: 2가지 [1,1] [2] n=3: 3가지 [1,1,1] [1,2] [2,1] n=4: 5가지 [1,1,1,1] [1,1,2] [1,2,1] [2,1,1] [2,2] n=5: 8가지 [1,1,1,1,1] [1,1,1,2] [1,1..

코딩테스트 2025.01.31

C# - 조건문을 단순화 하는 방법

코드를 작성하면서 조건문을 작성하는 경우에는 코드가 길어지면서 조건문도 복잡해진다. if문을 사용하는 경우에는 조건식이 복잡해지거나 부정 연산자가 자주 사용되고 조건식 안에서 2중, 3중으로 작성되면서 가독성이 떨어지는 조건문이 만들어지는 경우도 많다. switch문을 사용하는 경우에는 case가 늘어나면서 코드가 길어지는 경우 역시 빈번하게 발생한다. 이렇게 복잡한 조건식이 반복되면 코드의 가독성이 떨어지면서 리팩토링이 상당히 어려워지며 새로운 조건이 추가될 때 마다 조건식 전부를 뜯어 고치거나 더욱 복잡한 조건식이 탄생해버린다. 이런 경우에는 아래의 단순화 방법을 참고해서 코드를 작성하면 너무 복잡한 조건식이 탄생하는 빈도를 줄일 수 있다.  조건문을 단순화 하는 방법  1. 부정 연산자(!) 줄이기..

C# 2025.01.13

부동 소수점(floating point) 이란?

부동 소수점 이란? 부동 소수점은 실수(소수점이 있는 숫자)를 표현 및 연산 하기 위해서 사용하는 실수를 표현하는 방식이다.부동 소수점을 사용하면 상당히 폭넓은 숫자를 표현할 수 있다.부동 소수점은 IEEE 754* 표준에 따라 숫자를 가수, 지수, 부호로 나누어 저장한다.부동 소수점 이외에도 고정 소수점과 같은 표현 방식도 있다. IEEE 754란? : 전기전자공학자협회(Institute of Electrical and Electronics Engineers, IEEE)라는 전기전자공학 전문가들의 국제조직에서 지정한 부동 소수점 관련 표준 포맷을 뜻한다.  부동 소수점의 구성 요소 부동 소수점은 크게 부호(Sign), 지수(Exponent), 그리고 가수(Mantissa)로 구성된다.  1. 부호 (S..

C# [프로그래머스] 모음사전

문제 설명알파벳 모음 **A, E, I, O, U**만을 사용하여 길이가 1부터 5까지인 모든 단어가 사전에 정렬되어 있다고 가정하자.이는 5진수로 이루어진 숫자라고 생각하면 된다.각 자리의 모음 알파벳은 5진수 숫자로 대응되며 해당 알파벳이 가지는 가중치 만큼의 int값을 return 한다. 예 : 'A' 의 경우에는 1을 의미한다.'AA'의 경우에는 2를 의미한다.'AAA'는 3, 'AAAA'는 4, 'AAAAA'는 5를 의미하므로 'AAAAE'는 6을 의미한다. 위 설명을 바탕으로 각각의 자리 마다 가질 수 있는 가중치를 미리 계산해서 (배열의 크기를 정해줘야 하기 때문에) 반복문을 돌려주자, 5진수로 가정하지만 첫번째 숫자를 1로 대입시켜 주기 때문에 return 받는 숫자 값과 인덱스는 다르게 ..

코딩테스트 2024.12.09

메모리 정렬과 패딩

메모리 정렬(Memory Alignment) 이란? 메모리 정렬은 컴퓨터가 데이터를 효과적으로 저장하고 여기에 접근하는 방식을 뜻한다.데이터가 CPU에 저장될 때 컴퓨터가 더 빠르게 접근할 수 있도록 메모리 주소를 특정 기준에 따라 배치한다.핵심 키워드로는 정렬, 구조체 정렬, 패딩 등이 있다.   기본 정렬 규칙 데이터 타입의 크기에 따라 메모리 주소가 정렬된다.데이터의 시작 주소는 해당 데이터 크기의 배수여야 한다.ex) int의 경우는 4바이트 이기 때문에 4의 배수의 주소에 정렬되어야 한다.(0,4,8,12...)ex) double의 경우는 8바이트 이기 때문에 8의 배수의 주소에 정렬되어야 한다.(0,8,16,32...)구조체 내에서의 각 멤버들은 자신의 데이터 크기에 맞게 정렬된다.구조체 전체..

객체 지향 프로그래밍(OOP)이란?

객체 지향 프로그래밍을 이해하기 위해서는, 먼저 근간이 되는 절차 지향 프로그래밍과, 이를 대표하는 초창기 컴퓨터 언어인 C언어를 살펴보는 것이 중요하다.  객체 지향 프로그래밍은 절차 지향 프로그래밍으로 부터 탄생했으며, 절차 지향 프로그래밍의 여러 단점을 개선하고 객체지향 프로그래밍만의 장점과 특징을 가지고 있다. 이를 설명하기 위해서 절차 지향 프로그래밍부터 단계적으로 살펴보자.  절차 지향 프로그래밍 (POP - Procedural Oriented Programming)이란?     절차 지향 프로그래밍은 문제를 해결하기 위해 순차적으로 작업을 수행하는 방식에 기반한 프로그래밍 패러다임이다. 프로그램의 실행 절차(Procedure)에 초점을 맞춘 프로그래밍 패러다임인 만큼 함수를 중심으로 구성되며..

C# [프로그래머스] PCCP 기출문제 - 동영상 재생기

문제     문제 설명 동영상 재생기를 만드는 문제다.   동영상 재생기에는 3가지 기능을 지원하고 각각의 기능은 다음과 같다. 1. commands[] 의 string 배열 값이 "prev"인 경우 : 동영상을 10초 전으로 이동한다. 만약 현재 위치가 0분 10초 미만인 경우에는 0초로 이동하면 된다.  2. commands[] 의 string 배열 값이 "next"인 경우 : 동영상을 10초 후로 이동한다. 만약 남은 동영상의 길이가 10초 미만인 경우에는 영상의 길이에 해당하는 값으로 이동한다.  3. 오프닝 건너뛰기 기능 : 현재 재생 위치가 오프닝 구간에 해당한다면, 해당 구간을 스킵하는 기능이다. (op_start   주어지는 매개변수는 다음과 같다. string video_len = 동영상..

코딩테스트 2024.11.11