크래프톤 정글 TIL : 1010

lazyArtisan·2024년 10월 10일
0

정글 TIL

목록 보기
102/147

📚 Journal


인상적이었던 발표 : AWS에 올렸는데 해커가 DB 삭제하고 복구에 BTC 요구함. 보안을 신경써야 할 것 같다.

오늘 한 거 : 게시판 과제 발표, 경찰차 정답 꼬라보기, 나만무 발제, 팀 회의, 팀에서 할당받은 과제 (기술 스택 조사), 협력사 설명회



👾 나만무


기술 스택 조사

평가 기준 : [쉽다/어렵다, 가볍다/무겁다, 빠르다/느리다, 사용자 많다/사용자 적다, 기능 많다/적다]
1. 가장 잘 쓰이는 스택들
클라이언트
Phaser.js : 2D 게임 중 사실상 유일한 솔루션. (링크) [사용자 많다, 기능 많다]
Matter.js : 2D 웹 물리엔진. 간단함.
Three.js : 간단한 3D 게임을 만들 때 사용. [쉽다, 가볍다, 사용자 많다, 기능 적다]

백엔드
서버
Node.js + Socket.io

라이브러리
Colyseus : 실시간 게임에 특화된 프레임워크 (예시 링크, 페이지 아래로 내리면 예시 있음, 포토체스도 Colyseus 기반)
DB
SQL vs NoSQL
SQL : 데이터 일관성 및 무결성을 보장하는 데 유리. 데이터가 일관되고 테이블 간의 관계가 잘 정의된 구조화된 데이터에 적합.
NoSQL : 동적으로 변경되는 데이터에 적합. 높은 성능과 확장성이 필요한 애플리케이션에 사용됨.

Redis : In-Memory DB. 빠르지만 저장 공간 제한됨.
MongoDB : 비관계형 DB
MySQL : 관계형 DB [쉽다, 느리다, 사용자 많다]

  1. 대안
    클라이언트
    pygame : python으로 게임 만드는 라이브러리. Pygbag(Python to WebAssembly)이라는 걸로 변환하여 웹 브라우저에 올릴 수 있음. [쉽다, 사용자 많다, 기능 많다]
    Babylon.js : 3D 라이브러리. Three.js와 다르게 게임 프레임워크라서 조금 더 복잡한 게임을 만들 순 있겠지만, 사용자가 적음 (링크), 사용 예시 (링크) [사용자 적다, 기능 많다]

백엔드
서버
Flask + Flask-SocketIO : 파이썬. 싱글 스레드로 동작. [쉽다, 가볍다]
Django : 파이썬. Flask보다 어렵지만 기능이 많다.
Ruby on Rails + Action Cable : 루비. 개발 빠르고 쉽지만 대용량 트래픽을 감당하기 어렵다.

DB
DB들간의 차이점은 그렇게 크지 않은 것으로 보임. 찾아도 특징적인 부분들이 딱히 없음.

PostgreSQL
Amazon DynamoDB : AWS의 NoSQL 데이터베이스
MariaDB

  1. 안 좋아 보임

PixiJS : 물리 엔진, 입력 처리, 씬 관리 등 기본적인 게임 시스템을 직접 구현해야 한다고 함.

Firebase : 인벤토리같이 매우 기본적인 데이터를 관리하는게 아니면 추천하지 않는다고 함. (링크) (링크2)

  1. 기타
    Redux : 상태 관리 라이브러리
    MobX : 상태 관리 라이브러리

https://reactjam.com/ : 리액트로 만든 게임들 게임잼



⚔️ 백준


📌 2231 분해합

# 가장 쉬운 해결책 : 자연수 N부터 1씩 낮추면서 분해합과 같은지 확인해보기

N=int(input())
answer = 0
for i in range(N,-1,-1):
    num_sum = i
    temp = i
    while temp != 0:
        num_sum += temp % 10
        temp //= 10
    if num_sum == N:
        answer = i
print(answer)

일단 무지성으로 풀긴 했는데 당연히 1000ms나 나왔다.

def solve():
    for i in range(max(0, n-54), n):
        sum_num = i
        l = list(str(i))
        l = list(map(int, l))
        sum_num += sum(l)
        if n == sum_num:
            return i

    return 0

n = int(input())
print(solve())

당연히 최솟값이니까 아래에서부터 훑는데, 최댓값이 어디까지냐가 문제.

0개의 댓글