인상적이었던 발표 : 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 [쉽다, 느리다, 사용자 많다]
백엔드
서버
Flask + Flask-SocketIO : 파이썬. 싱글 스레드로 동작. [쉽다, 가볍다]
Django : 파이썬. Flask보다 어렵지만 기능이 많다.
Ruby on Rails + Action Cable : 루비. 개발 빠르고 쉽지만 대용량 트래픽을 감당하기 어렵다.
DB
DB들간의 차이점은 그렇게 크지 않은 것으로 보임. 찾아도 특징적인 부분들이 딱히 없음.
PostgreSQL
Amazon DynamoDB : AWS의 NoSQL 데이터베이스
MariaDB
PixiJS : 물리 엔진, 입력 처리, 씬 관리 등 기본적인 게임 시스템을 직접 구현해야 한다고 함.
Firebase : 인벤토리같이 매우 기본적인 데이터를 관리하는게 아니면 추천하지 않는다고 함. (링크) (링크2)
https://reactjam.com/ : 리액트로 만든 게임들 게임잼
# 가장 쉬운 해결책 : 자연수 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())
당연히 최솟값이니까 아래에서부터 훑는데, 최댓값이 어디까지냐가 문제.