SlideShare a Scribd company logo
선린인터넷고등학교 2021 알고리즘 컨퍼런스
Rust로 알고리즘 문제 풀어보기
옥찬호
utilForever@gmail.com
발표자 소개
• 옥찬호 (Chris Ohk)
• (현) Momenti Engine Engineer
• (전) Nexon Korea Game Programmer
• Microsoft Developer Technologies MVP
• C++ Korea Founder & Administrator
• Reinforcement Learning KR Administrator
• IT 전문서 집필 및 번역 다수
• 게임샐러드로 코드 한 줄 없이 게임 만들기 (2013)
• 유니티 Shader와 Effect 제작 (2014)
• 2D 게임 프로그래밍 (2014), 러스트 핵심 노트 (2017)
• 모던 C++ 입문 (2017), C++ 최적화 (2019)
2021 알고리즘 컨퍼런스
Rust로 알고리즘 문제 풀어보기
utilForever@gmail.com
utilForever
Rust란?
• https://www.rust-lang.org/
• 모질라 재단에서 2010년 7월 7일 처음 발표
• 현재는 러스트 재단으로 독립해서 개발되고 있다.
• Rust 언어의 특징
• 안전한 메모리 관리
• 철저한 예외나 에러 관리
• 특이한 enum 시스템
• 트레이트
• 비동기 프로그래밍
• 제네릭
2021 알고리즘 컨퍼런스
Rust로 알고리즘 문제 풀어보기
PS에서의 Rust
• PS에서 주로 사용하는 언어(C++, Python 등)에 비해 어려운 점이 많다.
• 불편한 콘솔 입출력
• C++ : std::cin, std::cout
• Python : input.split(), print()
• Rust : 간단하지 않음 (1줄로 안됨)
• 엄격한 언어 문법
• 변수 타입을 반드시 일치시켜야 한다.
• 수명을 고려하면서 소유권 규칙을 지켜야 한다.
• 부실한 자료 구조와 알고리즘
• 가장 기본적인 자료 구조와 알고리즘만 존재한다.
• C++이나 Python에 있는 다양한 함수들이 Rust에는 존재하지 않는다.
2021 알고리즘 컨퍼런스
Rust로 알고리즘 문제 풀어보기
PS에서의 Rust
• 그러면 굳이 왜?
• 불편한 콘솔 입출력
• 아 이건 답이 없… (X를 눌러 조의를 표하세요.)
• 특히 입력 라인 수가 많을수록 매우 불리해진다.
• 엄격한 언어 문법
• 품질이 높은 코드를 작성하게 된다.
• 메모리 관리를 잘 하고 있는지 확인할 수 있다.
• 부실한 자료 구조와 알고리즘
• 자료 구조와 알고리즘을 직접 구현해보며 이해하는 게 도움이 된다.
2021 알고리즘 컨퍼런스
Rust로 알고리즘 문제 풀어보기
A + B (BOJ 1000) - C++ 2021 알고리즘 컨퍼런스
Rust로 알고리즘 문제 풀어보기
A + B (BOJ 1000) - Rust 2021 알고리즘 컨퍼런스
Rust로 알고리즘 문제 풀어보기
GCD와 LCM (BOJ 2609) - C++ 2021 알고리즘 컨퍼런스
Rust로 알고리즘 문제 풀어보기
GCD와 LCM (BOJ 2609) - Rust 2021 알고리즘 컨퍼런스
Rust로 알고리즘 문제 풀어보기
std::gcd, std::lcm?
그런 거 없다.
GCD와 LCM (BOJ 2609) - Rust 2021 알고리즘 컨퍼런스
Rust로 알고리즘 문제 풀어보기
다음 순열 (BOJ 10972) - C++ 2021 알고리즘 컨퍼런스
Rust로 알고리즘 문제 풀어보기
다음 순열 (BOJ 10972) - Rust 2021 알고리즘 컨퍼런스
Rust로 알고리즘 문제 풀어보기
std::next_permutation?
어림도 없다.
다음 순열 (BOJ 10972) - Rust 2021 알고리즘 컨퍼런스
Rust로 알고리즘 문제 풀어보기
Rust 자료 구조
• 기본 자료 구조들은 구현되어 있다. 다만, 익숙한 이름이 아닐 뿐…
• 스택(Stack) : std::stack std::collections::Vec
• 큐(Queue) / 덱(Deque) : std::queue, std::deque std::collections::VecDeque
• 링크드 리스트(Linked List) : std::list std::collections::LinkedList
• 맵(Map) : std::map std::collections::HashMap
• B-트리(B-Tree) : std::collections::BTreeMap
• 셋(Set) : std::set std::collections::HashSet/BTreeSet
• 우선순위 큐(Priority Queue) : std::priority_queue std::collections::BinaryHeap
2021 알고리즘 컨퍼런스
Rust로 알고리즘 문제 풀어보기
계단 오르기 (BOJ 2579) - Rust 2021 알고리즘 컨퍼런스
Rust로 알고리즘 문제 풀어보기
제로 (BOJ 10773) - Rust 2021 알고리즘 컨퍼런스
Rust로 알고리즘 문제 풀어보기
BOJ 수열 1 (BOJ 13323) - Rust 2021 알고리즘 컨퍼런스
Rust로 알고리즘 문제 풀어보기
Rust를 배우고 싶다면…
• Rust 공식 가이드라인 문서 : https://doc.rust-lang.org/book/
• A Tour of Rust : https://tourofrust.com/
• 러스트 프로그래밍 공식 가이드 (제이펍, 2019)
• Contest Algorithms in Rust
(https://github.com/EbTech/rust-algorithms)
• Common Data Structures and Algorithms in Rust
(https://github.com/utilForever/algorithm-rs)
2021 알고리즘 컨퍼런스
Rust로 알고리즘 문제 풀어보기
TL; DR 2021 알고리즘 컨퍼런스
Rust로 알고리즘 문제 풀어보기
감사합니다.
utilForever@gmail.com
https://github.com/utilForever
Facebook, Twitter: @utilForever

More Related Content

What's hot

빌드관리 및 디버깅 (2010년 자료)
빌드관리 및 디버깅 (2010년 자료)빌드관리 및 디버깅 (2010년 자료)
빌드관리 및 디버깅 (2010년 자료)
YEONG-CHEON YOU
 
d.ts 만들기
d.ts 만들기d.ts 만들기
d.ts 만들기
DaeSeon Jeong
 
Observable Everywhere - Rxの原則とUniRxにみるデータソースの見つけ方
Observable Everywhere  - Rxの原則とUniRxにみるデータソースの見つけ方Observable Everywhere  - Rxの原則とUniRxにみるデータソースの見つけ方
Observable Everywhere - Rxの原則とUniRxにみるデータソースの見つけ方Yoshifumi Kawai
 
온라인 게임 처음부터 끝까지 동적언어로 만들기
온라인 게임 처음부터 끝까지 동적언어로 만들기온라인 게임 처음부터 끝까지 동적언어로 만들기
온라인 게임 처음부터 끝까지 동적언어로 만들기Seungjae Lee
 
프로그래머가 되고 싶으세요
프로그래머가 되고 싶으세요프로그래머가 되고 싶으세요
프로그래머가 되고 싶으세요Chris Ohk
 
Multiplayer Game Sync Techniques through CAP theorem
Multiplayer Game Sync Techniques through CAP theoremMultiplayer Game Sync Techniques through CAP theorem
Multiplayer Game Sync Techniques through CAP theorem
Seungmo Koo
 
오딘: 발할라 라이징 MMORPG의 성능 최적화 사례 공유 [카카오게임즈 - 레벨 300] - 발표자: 김문권, 팀장, 라이온하트 스튜디오...
오딘: 발할라 라이징 MMORPG의 성능 최적화 사례 공유 [카카오게임즈 - 레벨 300] - 발표자: 김문권, 팀장, 라이온하트 스튜디오...오딘: 발할라 라이징 MMORPG의 성능 최적화 사례 공유 [카카오게임즈 - 레벨 300] - 발표자: 김문권, 팀장, 라이온하트 스튜디오...
오딘: 발할라 라이징 MMORPG의 성능 최적화 사례 공유 [카카오게임즈 - 레벨 300] - 발표자: 김문권, 팀장, 라이온하트 스튜디오...
Amazon Web Services Korea
 
게임 분산 서버 구조
게임 분산 서버 구조게임 분산 서버 구조
게임 분산 서버 구조
Hyunjik Bae
 
게임 프로그래밍 기초 공부법
게임 프로그래밍 기초 공부법게임 프로그래밍 기초 공부법
게임 프로그래밍 기초 공부법
Chris Ohk
 
[NDC2016] TERA 서버의 Modern C++ 활용기
[NDC2016] TERA 서버의 Modern C++ 활용기[NDC2016] TERA 서버의 Modern C++ 활용기
[NDC2016] TERA 서버의 Modern C++ 활용기
Sang Heon Lee
 
Riderはいいぞ!
Riderはいいぞ!Riderはいいぞ!
Riderはいいぞ!
UnityTechnologiesJapan002
 
Unreal Open Day 2017 Optimize in Mobile UI
Unreal Open Day 2017 Optimize in Mobile UIUnreal Open Day 2017 Optimize in Mobile UI
Unreal Open Day 2017 Optimize in Mobile UI
Epic Games China
 
KGC 2014: 분산 게임 서버 구조론
KGC 2014: 분산 게임 서버 구조론KGC 2014: 분산 게임 서버 구조론
KGC 2014: 분산 게임 서버 구조론
Hyunjik Bae
 
オブジェクト指向できていますか?
オブジェクト指向できていますか?オブジェクト指向できていますか?
オブジェクト指向できていますか?Moriharu Ohzu
 
ドメイン駆動設計をゲーム開発に活かす
ドメイン駆動設計をゲーム開発に活かすドメイン駆動設計をゲーム開発に活かす
ドメイン駆動設計をゲーム開発に活かす
増田 亨
 
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012devCAT Studio, NEXON
 
AndroidにおけるActivity管理の話
AndroidにおけるActivity管理の話AndroidにおけるActivity管理の話
AndroidにおけるActivity管理の話
chigichan24
 
홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018
홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018
홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018
devCAT Studio, NEXON
 
Unityでオニオンアーキテクチャ
UnityでオニオンアーキテクチャUnityでオニオンアーキテクチャ
Unityでオニオンアーキテクチャ
torisoup
 
GPGPU(CUDA)를 이용한 MMOG 캐릭터 충돌처리
GPGPU(CUDA)를 이용한 MMOG 캐릭터 충돌처리GPGPU(CUDA)를 이용한 MMOG 캐릭터 충돌처리
GPGPU(CUDA)를 이용한 MMOG 캐릭터 충돌처리
YEONG-CHEON YOU
 

What's hot (20)

빌드관리 및 디버깅 (2010년 자료)
빌드관리 및 디버깅 (2010년 자료)빌드관리 및 디버깅 (2010년 자료)
빌드관리 및 디버깅 (2010년 자료)
 
d.ts 만들기
d.ts 만들기d.ts 만들기
d.ts 만들기
 
Observable Everywhere - Rxの原則とUniRxにみるデータソースの見つけ方
Observable Everywhere  - Rxの原則とUniRxにみるデータソースの見つけ方Observable Everywhere  - Rxの原則とUniRxにみるデータソースの見つけ方
Observable Everywhere - Rxの原則とUniRxにみるデータソースの見つけ方
 
온라인 게임 처음부터 끝까지 동적언어로 만들기
온라인 게임 처음부터 끝까지 동적언어로 만들기온라인 게임 처음부터 끝까지 동적언어로 만들기
온라인 게임 처음부터 끝까지 동적언어로 만들기
 
프로그래머가 되고 싶으세요
프로그래머가 되고 싶으세요프로그래머가 되고 싶으세요
프로그래머가 되고 싶으세요
 
Multiplayer Game Sync Techniques through CAP theorem
Multiplayer Game Sync Techniques through CAP theoremMultiplayer Game Sync Techniques through CAP theorem
Multiplayer Game Sync Techniques through CAP theorem
 
오딘: 발할라 라이징 MMORPG의 성능 최적화 사례 공유 [카카오게임즈 - 레벨 300] - 발표자: 김문권, 팀장, 라이온하트 스튜디오...
오딘: 발할라 라이징 MMORPG의 성능 최적화 사례 공유 [카카오게임즈 - 레벨 300] - 발표자: 김문권, 팀장, 라이온하트 스튜디오...오딘: 발할라 라이징 MMORPG의 성능 최적화 사례 공유 [카카오게임즈 - 레벨 300] - 발표자: 김문권, 팀장, 라이온하트 스튜디오...
오딘: 발할라 라이징 MMORPG의 성능 최적화 사례 공유 [카카오게임즈 - 레벨 300] - 발표자: 김문권, 팀장, 라이온하트 스튜디오...
 
게임 분산 서버 구조
게임 분산 서버 구조게임 분산 서버 구조
게임 분산 서버 구조
 
게임 프로그래밍 기초 공부법
게임 프로그래밍 기초 공부법게임 프로그래밍 기초 공부법
게임 프로그래밍 기초 공부법
 
[NDC2016] TERA 서버의 Modern C++ 활용기
[NDC2016] TERA 서버의 Modern C++ 활용기[NDC2016] TERA 서버의 Modern C++ 활용기
[NDC2016] TERA 서버의 Modern C++ 활용기
 
Riderはいいぞ!
Riderはいいぞ!Riderはいいぞ!
Riderはいいぞ!
 
Unreal Open Day 2017 Optimize in Mobile UI
Unreal Open Day 2017 Optimize in Mobile UIUnreal Open Day 2017 Optimize in Mobile UI
Unreal Open Day 2017 Optimize in Mobile UI
 
KGC 2014: 분산 게임 서버 구조론
KGC 2014: 분산 게임 서버 구조론KGC 2014: 분산 게임 서버 구조론
KGC 2014: 분산 게임 서버 구조론
 
オブジェクト指向できていますか?
オブジェクト指向できていますか?オブジェクト指向できていますか?
オブジェクト指向できていますか?
 
ドメイン駆動設計をゲーム開発に活かす
ドメイン駆動設計をゲーム開発に活かすドメイン駆動設計をゲーム開発に活かす
ドメイン駆動設計をゲーム開発に活かす
 
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
 
AndroidにおけるActivity管理の話
AndroidにおけるActivity管理の話AndroidにおけるActivity管理の話
AndroidにおけるActivity管理の話
 
홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018
홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018
홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018
 
Unityでオニオンアーキテクチャ
UnityでオニオンアーキテクチャUnityでオニオンアーキテクチャ
Unityでオニオンアーキテクチャ
 
GPGPU(CUDA)를 이용한 MMOG 캐릭터 충돌처리
GPGPU(CUDA)를 이용한 MMOG 캐릭터 충돌처리GPGPU(CUDA)를 이용한 MMOG 캐릭터 충돌처리
GPGPU(CUDA)를 이용한 MMOG 캐릭터 충돌처리
 

Similar to 선린인터넷고등학교 2021 알고리즘 컨퍼런스 - Rust로 알고리즘 문제 풀어보기

송창규, unity build로 빌드타임 반토막내기, NDC2010
송창규, unity build로 빌드타임 반토막내기, NDC2010송창규, unity build로 빌드타임 반토막내기, NDC2010
송창규, unity build로 빌드타임 반토막내기, NDC2010devCAT Studio, NEXON
 
Cocos2dx와 c++11를 이용한 게임 개발
Cocos2dx와 c++11를 이용한 게임 개발Cocos2dx와 c++11를 이용한 게임 개발
Cocos2dx와 c++11를 이용한 게임 개발
권 태혁
 
llvm 소개
llvm 소개llvm 소개
llvm 소개
Minhyuk Kwon
 
Maker 오해와 진실
Maker 오해와 진실Maker 오해와 진실
Maker 오해와 진실
유명환 FunFun Yoo
 
초보 개발자/학생들을 위한 오픈소스 트랜드
초보 개발자/학생들을 위한 오픈소스 트랜드 초보 개발자/학생들을 위한 오픈소스 트랜드
초보 개발자/학생들을 위한 오픈소스 트랜드
YoungSu Son
 
NDC11_김성익_슈퍼클래스
NDC11_김성익_슈퍼클래스NDC11_김성익_슈퍼클래스
NDC11_김성익_슈퍼클래스
Sungik Kim
 
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기
Jaeseung Ha
 
[9XD] Introduction to Computer Graphics
[9XD] Introduction to Computer Graphics[9XD] Introduction to Computer Graphics
[9XD] Introduction to Computer Graphics
Chris Ohk
 
JVM_트러블슈팅.pdf
JVM_트러블슈팅.pdfJVM_트러블슈팅.pdf
JVM_트러블슈팅.pdf
kwbak
 
덤프 파일을 통한 사후 디버깅 실용 테크닉 NDC2012
덤프 파일을 통한 사후 디버깅 실용 테크닉 NDC2012덤프 파일을 통한 사후 디버깅 실용 테크닉 NDC2012
덤프 파일을 통한 사후 디버깅 실용 테크닉 NDC2012Esun Kim
 
NDC15 - 사례로 살펴보는 MSVC 빌드 최적화 팁
NDC15 - 사례로 살펴보는 MSVC 빌드 최적화 팁NDC15 - 사례로 살펴보는 MSVC 빌드 최적화 팁
NDC15 - 사례로 살펴보는 MSVC 빌드 최적화 팁
Yi-kwon Hwang
 
[2021 오픈소스 컨트리뷰션 아카데미] #4 버그질라 사용법, 보그 보고 방법 소개
[2021 오픈소스 컨트리뷰션 아카데미] #4 버그질라 사용법, 보그 보고 방법 소개 [2021 오픈소스 컨트리뷰션 아카데미] #4 버그질라 사용법, 보그 보고 방법 소개
[2021 오픈소스 컨트리뷰션 아카데미] #4 버그질라 사용법, 보그 보고 방법 소개
DaeHyun Sung
 
cross compile
cross compilecross compile
cross compile
he4722
 
제3회 오픈 로보틱스 세미나 1일차 1세션 안드로이드 App 통신
제3회 오픈 로보틱스 세미나 1일차 1세션 안드로이드 App 통신제3회 오픈 로보틱스 세미나 1일차 1세션 안드로이드 App 통신
제3회 오픈 로보틱스 세미나 1일차 1세션 안드로이드 App 통신
WooSangHwang
 
[조진현] [Kgc2011]direct x11 이야기
[조진현] [Kgc2011]direct x11 이야기[조진현] [Kgc2011]direct x11 이야기
[조진현] [Kgc2011]direct x11 이야기진현 조
 
[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기
[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기
[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기
Chris Ohk
 
Tech Update - The Future of .NET Framework (김명신 부장)
Tech Update - The Future of .NET Framework (김명신 부장)Tech Update - The Future of .NET Framework (김명신 부장)
Tech Update - The Future of .NET Framework (김명신 부장)
Eunbee Song
 
생각하는 프로그래밍 1부
생각하는 프로그래밍 1부생각하는 프로그래밍 1부
생각하는 프로그래밍 1부sj k
 
Ndc2010 김주복, v3. 마비노기2아키텍처리뷰
Ndc2010   김주복, v3. 마비노기2아키텍처리뷰Ndc2010   김주복, v3. 마비노기2아키텍처리뷰
Ndc2010 김주복, v3. 마비노기2아키텍처리뷰
Jubok Kim
 
[2021 오픈소스 컨트리뷰션 아카데미] #5 컨트리뷰션 정리 및 gerrit리뷰시스템 소개 등
[2021 오픈소스 컨트리뷰션 아카데미] #5 컨트리뷰션 정리 및 gerrit리뷰시스템 소개 등[2021 오픈소스 컨트리뷰션 아카데미] #5 컨트리뷰션 정리 및 gerrit리뷰시스템 소개 등
[2021 오픈소스 컨트리뷰션 아카데미] #5 컨트리뷰션 정리 및 gerrit리뷰시스템 소개 등
DaeHyun Sung
 

Similar to 선린인터넷고등학교 2021 알고리즘 컨퍼런스 - Rust로 알고리즘 문제 풀어보기 (20)

송창규, unity build로 빌드타임 반토막내기, NDC2010
송창규, unity build로 빌드타임 반토막내기, NDC2010송창규, unity build로 빌드타임 반토막내기, NDC2010
송창규, unity build로 빌드타임 반토막내기, NDC2010
 
Cocos2dx와 c++11를 이용한 게임 개발
Cocos2dx와 c++11를 이용한 게임 개발Cocos2dx와 c++11를 이용한 게임 개발
Cocos2dx와 c++11를 이용한 게임 개발
 
llvm 소개
llvm 소개llvm 소개
llvm 소개
 
Maker 오해와 진실
Maker 오해와 진실Maker 오해와 진실
Maker 오해와 진실
 
초보 개발자/학생들을 위한 오픈소스 트랜드
초보 개발자/학생들을 위한 오픈소스 트랜드 초보 개발자/학생들을 위한 오픈소스 트랜드
초보 개발자/학생들을 위한 오픈소스 트랜드
 
NDC11_김성익_슈퍼클래스
NDC11_김성익_슈퍼클래스NDC11_김성익_슈퍼클래스
NDC11_김성익_슈퍼클래스
 
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기
 
[9XD] Introduction to Computer Graphics
[9XD] Introduction to Computer Graphics[9XD] Introduction to Computer Graphics
[9XD] Introduction to Computer Graphics
 
JVM_트러블슈팅.pdf
JVM_트러블슈팅.pdfJVM_트러블슈팅.pdf
JVM_트러블슈팅.pdf
 
덤프 파일을 통한 사후 디버깅 실용 테크닉 NDC2012
덤프 파일을 통한 사후 디버깅 실용 테크닉 NDC2012덤프 파일을 통한 사후 디버깅 실용 테크닉 NDC2012
덤프 파일을 통한 사후 디버깅 실용 테크닉 NDC2012
 
NDC15 - 사례로 살펴보는 MSVC 빌드 최적화 팁
NDC15 - 사례로 살펴보는 MSVC 빌드 최적화 팁NDC15 - 사례로 살펴보는 MSVC 빌드 최적화 팁
NDC15 - 사례로 살펴보는 MSVC 빌드 최적화 팁
 
[2021 오픈소스 컨트리뷰션 아카데미] #4 버그질라 사용법, 보그 보고 방법 소개
[2021 오픈소스 컨트리뷰션 아카데미] #4 버그질라 사용법, 보그 보고 방법 소개 [2021 오픈소스 컨트리뷰션 아카데미] #4 버그질라 사용법, 보그 보고 방법 소개
[2021 오픈소스 컨트리뷰션 아카데미] #4 버그질라 사용법, 보그 보고 방법 소개
 
cross compile
cross compilecross compile
cross compile
 
제3회 오픈 로보틱스 세미나 1일차 1세션 안드로이드 App 통신
제3회 오픈 로보틱스 세미나 1일차 1세션 안드로이드 App 통신제3회 오픈 로보틱스 세미나 1일차 1세션 안드로이드 App 통신
제3회 오픈 로보틱스 세미나 1일차 1세션 안드로이드 App 통신
 
[조진현] [Kgc2011]direct x11 이야기
[조진현] [Kgc2011]direct x11 이야기[조진현] [Kgc2011]direct x11 이야기
[조진현] [Kgc2011]direct x11 이야기
 
[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기
[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기
[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기
 
Tech Update - The Future of .NET Framework (김명신 부장)
Tech Update - The Future of .NET Framework (김명신 부장)Tech Update - The Future of .NET Framework (김명신 부장)
Tech Update - The Future of .NET Framework (김명신 부장)
 
생각하는 프로그래밍 1부
생각하는 프로그래밍 1부생각하는 프로그래밍 1부
생각하는 프로그래밍 1부
 
Ndc2010 김주복, v3. 마비노기2아키텍처리뷰
Ndc2010   김주복, v3. 마비노기2아키텍처리뷰Ndc2010   김주복, v3. 마비노기2아키텍처리뷰
Ndc2010 김주복, v3. 마비노기2아키텍처리뷰
 
[2021 오픈소스 컨트리뷰션 아카데미] #5 컨트리뷰션 정리 및 gerrit리뷰시스템 소개 등
[2021 오픈소스 컨트리뷰션 아카데미] #5 컨트리뷰션 정리 및 gerrit리뷰시스템 소개 등[2021 오픈소스 컨트리뷰션 아카데미] #5 컨트리뷰션 정리 및 gerrit리뷰시스템 소개 등
[2021 오픈소스 컨트리뷰션 아카데미] #5 컨트리뷰션 정리 및 gerrit리뷰시스템 소개 등
 

More from Chris Ohk

인프콘 2022 - Rust 크로스 플랫폼 프로그래밍
인프콘 2022 - Rust 크로스 플랫폼 프로그래밍인프콘 2022 - Rust 크로스 플랫폼 프로그래밍
인프콘 2022 - Rust 크로스 플랫폼 프로그래밍
Chris Ohk
 
고려대학교 컴퓨터학과 특강 - 대학생 때 알았더라면 좋았을 것들
고려대학교 컴퓨터학과 특강 - 대학생 때 알았더라면 좋았을 것들고려대학교 컴퓨터학과 특강 - 대학생 때 알았더라면 좋았을 것들
고려대학교 컴퓨터학과 특강 - 대학생 때 알았더라면 좋았을 것들
Chris Ohk
 
Momenti Seminar - A Tour of Rust, Part 2
Momenti Seminar - A Tour of Rust, Part 2Momenti Seminar - A Tour of Rust, Part 2
Momenti Seminar - A Tour of Rust, Part 2
Chris Ohk
 
Momenti Seminar - A Tour of Rust, Part 1
Momenti Seminar - A Tour of Rust, Part 1Momenti Seminar - A Tour of Rust, Part 1
Momenti Seminar - A Tour of Rust, Part 1
Chris Ohk
 
Evolving Reinforcement Learning Algorithms, JD. Co-Reyes et al, 2021
Evolving Reinforcement Learning Algorithms, JD. Co-Reyes et al, 2021Evolving Reinforcement Learning Algorithms, JD. Co-Reyes et al, 2021
Evolving Reinforcement Learning Algorithms, JD. Co-Reyes et al, 2021
Chris Ohk
 
Adversarially Guided Actor-Critic, Y. Flet-Berliac et al, 2021
Adversarially Guided Actor-Critic, Y. Flet-Berliac et al, 2021Adversarially Guided Actor-Critic, Y. Flet-Berliac et al, 2021
Adversarially Guided Actor-Critic, Y. Flet-Berliac et al, 2021
Chris Ohk
 
Agent57: Outperforming the Atari Human Benchmark, Badia, A. P. et al, 2020
Agent57: Outperforming the Atari Human Benchmark, Badia, A. P. et al, 2020Agent57: Outperforming the Atari Human Benchmark, Badia, A. P. et al, 2020
Agent57: Outperforming the Atari Human Benchmark, Badia, A. P. et al, 2020
Chris Ohk
 
Proximal Policy Optimization Algorithms, Schulman et al, 2017
Proximal Policy Optimization Algorithms, Schulman et al, 2017Proximal Policy Optimization Algorithms, Schulman et al, 2017
Proximal Policy Optimization Algorithms, Schulman et al, 2017
Chris Ohk
 
Trust Region Policy Optimization, Schulman et al, 2015
Trust Region Policy Optimization, Schulman et al, 2015Trust Region Policy Optimization, Schulman et al, 2015
Trust Region Policy Optimization, Schulman et al, 2015
Chris Ohk
 
Continuous Control with Deep Reinforcement Learning, lillicrap et al, 2015
Continuous Control with Deep Reinforcement Learning, lillicrap et al, 2015Continuous Control with Deep Reinforcement Learning, lillicrap et al, 2015
Continuous Control with Deep Reinforcement Learning, lillicrap et al, 2015
Chris Ohk
 
GDG Gwangju DevFest 2019 - <하스스톤> 강화학습 환경 개발기
GDG Gwangju DevFest 2019 - <하스스톤> 강화학습 환경 개발기GDG Gwangju DevFest 2019 - <하스스톤> 강화학습 환경 개발기
GDG Gwangju DevFest 2019 - <하스스톤> 강화학습 환경 개발기
Chris Ohk
 
[RLKorea] <하스스톤> 강화학습 환경 개발기
[RLKorea] <하스스톤> 강화학습 환경 개발기[RLKorea] <하스스톤> 강화학습 환경 개발기
[RLKorea] <하스스톤> 강화학습 환경 개발기
Chris Ohk
 
[NDC 2019] 하스스톤 강화학습 환경 개발기
[NDC 2019] 하스스톤 강화학습 환경 개발기[NDC 2019] 하스스톤 강화학습 환경 개발기
[NDC 2019] 하스스톤 강화학습 환경 개발기
Chris Ohk
 
C++20 Key Features Summary
C++20 Key Features SummaryC++20 Key Features Summary
C++20 Key Features Summary
Chris Ohk
 
[델리만주] 대학원 캐슬 - 석사에서 게임 프로그래머까지
[델리만주] 대학원 캐슬 - 석사에서 게임 프로그래머까지[델리만주] 대학원 캐슬 - 석사에서 게임 프로그래머까지
[델리만주] 대학원 캐슬 - 석사에서 게임 프로그래머까지
Chris Ohk
 
디미고 특강 - 개발을 시작하려는 여러분에게
디미고 특강 - 개발을 시작하려는 여러분에게디미고 특강 - 개발을 시작하려는 여러분에게
디미고 특강 - 개발을 시작하려는 여러분에게
Chris Ohk
 
청강대 특강 - 프로젝트 제대로 해보기
청강대 특강 - 프로젝트 제대로 해보기청강대 특강 - 프로젝트 제대로 해보기
청강대 특강 - 프로젝트 제대로 해보기
Chris Ohk
 
[NDC 2018] 유체역학 엔진 개발기
[NDC 2018] 유체역학 엔진 개발기[NDC 2018] 유체역학 엔진 개발기
[NDC 2018] 유체역학 엔진 개발기
Chris Ohk
 
My Way, Your Way
My Way, Your WayMy Way, Your Way
My Way, Your Way
Chris Ohk
 
Re:Zero부터 시작하지 않는 오픈소스 개발
Re:Zero부터 시작하지 않는 오픈소스 개발Re:Zero부터 시작하지 않는 오픈소스 개발
Re:Zero부터 시작하지 않는 오픈소스 개발
Chris Ohk
 

More from Chris Ohk (20)

인프콘 2022 - Rust 크로스 플랫폼 프로그래밍
인프콘 2022 - Rust 크로스 플랫폼 프로그래밍인프콘 2022 - Rust 크로스 플랫폼 프로그래밍
인프콘 2022 - Rust 크로스 플랫폼 프로그래밍
 
고려대학교 컴퓨터학과 특강 - 대학생 때 알았더라면 좋았을 것들
고려대학교 컴퓨터학과 특강 - 대학생 때 알았더라면 좋았을 것들고려대학교 컴퓨터학과 특강 - 대학생 때 알았더라면 좋았을 것들
고려대학교 컴퓨터학과 특강 - 대학생 때 알았더라면 좋았을 것들
 
Momenti Seminar - A Tour of Rust, Part 2
Momenti Seminar - A Tour of Rust, Part 2Momenti Seminar - A Tour of Rust, Part 2
Momenti Seminar - A Tour of Rust, Part 2
 
Momenti Seminar - A Tour of Rust, Part 1
Momenti Seminar - A Tour of Rust, Part 1Momenti Seminar - A Tour of Rust, Part 1
Momenti Seminar - A Tour of Rust, Part 1
 
Evolving Reinforcement Learning Algorithms, JD. Co-Reyes et al, 2021
Evolving Reinforcement Learning Algorithms, JD. Co-Reyes et al, 2021Evolving Reinforcement Learning Algorithms, JD. Co-Reyes et al, 2021
Evolving Reinforcement Learning Algorithms, JD. Co-Reyes et al, 2021
 
Adversarially Guided Actor-Critic, Y. Flet-Berliac et al, 2021
Adversarially Guided Actor-Critic, Y. Flet-Berliac et al, 2021Adversarially Guided Actor-Critic, Y. Flet-Berliac et al, 2021
Adversarially Guided Actor-Critic, Y. Flet-Berliac et al, 2021
 
Agent57: Outperforming the Atari Human Benchmark, Badia, A. P. et al, 2020
Agent57: Outperforming the Atari Human Benchmark, Badia, A. P. et al, 2020Agent57: Outperforming the Atari Human Benchmark, Badia, A. P. et al, 2020
Agent57: Outperforming the Atari Human Benchmark, Badia, A. P. et al, 2020
 
Proximal Policy Optimization Algorithms, Schulman et al, 2017
Proximal Policy Optimization Algorithms, Schulman et al, 2017Proximal Policy Optimization Algorithms, Schulman et al, 2017
Proximal Policy Optimization Algorithms, Schulman et al, 2017
 
Trust Region Policy Optimization, Schulman et al, 2015
Trust Region Policy Optimization, Schulman et al, 2015Trust Region Policy Optimization, Schulman et al, 2015
Trust Region Policy Optimization, Schulman et al, 2015
 
Continuous Control with Deep Reinforcement Learning, lillicrap et al, 2015
Continuous Control with Deep Reinforcement Learning, lillicrap et al, 2015Continuous Control with Deep Reinforcement Learning, lillicrap et al, 2015
Continuous Control with Deep Reinforcement Learning, lillicrap et al, 2015
 
GDG Gwangju DevFest 2019 - <하스스톤> 강화학습 환경 개발기
GDG Gwangju DevFest 2019 - <하스스톤> 강화학습 환경 개발기GDG Gwangju DevFest 2019 - <하스스톤> 강화학습 환경 개발기
GDG Gwangju DevFest 2019 - <하스스톤> 강화학습 환경 개발기
 
[RLKorea] <하스스톤> 강화학습 환경 개발기
[RLKorea] <하스스톤> 강화학습 환경 개발기[RLKorea] <하스스톤> 강화학습 환경 개발기
[RLKorea] <하스스톤> 강화학습 환경 개발기
 
[NDC 2019] 하스스톤 강화학습 환경 개발기
[NDC 2019] 하스스톤 강화학습 환경 개발기[NDC 2019] 하스스톤 강화학습 환경 개발기
[NDC 2019] 하스스톤 강화학습 환경 개발기
 
C++20 Key Features Summary
C++20 Key Features SummaryC++20 Key Features Summary
C++20 Key Features Summary
 
[델리만주] 대학원 캐슬 - 석사에서 게임 프로그래머까지
[델리만주] 대학원 캐슬 - 석사에서 게임 프로그래머까지[델리만주] 대학원 캐슬 - 석사에서 게임 프로그래머까지
[델리만주] 대학원 캐슬 - 석사에서 게임 프로그래머까지
 
디미고 특강 - 개발을 시작하려는 여러분에게
디미고 특강 - 개발을 시작하려는 여러분에게디미고 특강 - 개발을 시작하려는 여러분에게
디미고 특강 - 개발을 시작하려는 여러분에게
 
청강대 특강 - 프로젝트 제대로 해보기
청강대 특강 - 프로젝트 제대로 해보기청강대 특강 - 프로젝트 제대로 해보기
청강대 특강 - 프로젝트 제대로 해보기
 
[NDC 2018] 유체역학 엔진 개발기
[NDC 2018] 유체역학 엔진 개발기[NDC 2018] 유체역학 엔진 개발기
[NDC 2018] 유체역학 엔진 개발기
 
My Way, Your Way
My Way, Your WayMy Way, Your Way
My Way, Your Way
 
Re:Zero부터 시작하지 않는 오픈소스 개발
Re:Zero부터 시작하지 않는 오픈소스 개발Re:Zero부터 시작하지 않는 오픈소스 개발
Re:Zero부터 시작하지 않는 오픈소스 개발
 

선린인터넷고등학교 2021 알고리즘 컨퍼런스 - Rust로 알고리즘 문제 풀어보기

  • 1. 선린인터넷고등학교 2021 알고리즘 컨퍼런스 Rust로 알고리즘 문제 풀어보기 옥찬호 utilForever@gmail.com
  • 2. 발표자 소개 • 옥찬호 (Chris Ohk) • (현) Momenti Engine Engineer • (전) Nexon Korea Game Programmer • Microsoft Developer Technologies MVP • C++ Korea Founder & Administrator • Reinforcement Learning KR Administrator • IT 전문서 집필 및 번역 다수 • 게임샐러드로 코드 한 줄 없이 게임 만들기 (2013) • 유니티 Shader와 Effect 제작 (2014) • 2D 게임 프로그래밍 (2014), 러스트 핵심 노트 (2017) • 모던 C++ 입문 (2017), C++ 최적화 (2019) 2021 알고리즘 컨퍼런스 Rust로 알고리즘 문제 풀어보기 utilForever@gmail.com utilForever
  • 3. Rust란? • https://www.rust-lang.org/ • 모질라 재단에서 2010년 7월 7일 처음 발표 • 현재는 러스트 재단으로 독립해서 개발되고 있다. • Rust 언어의 특징 • 안전한 메모리 관리 • 철저한 예외나 에러 관리 • 특이한 enum 시스템 • 트레이트 • 비동기 프로그래밍 • 제네릭 2021 알고리즘 컨퍼런스 Rust로 알고리즘 문제 풀어보기
  • 4. PS에서의 Rust • PS에서 주로 사용하는 언어(C++, Python 등)에 비해 어려운 점이 많다. • 불편한 콘솔 입출력 • C++ : std::cin, std::cout • Python : input.split(), print() • Rust : 간단하지 않음 (1줄로 안됨) • 엄격한 언어 문법 • 변수 타입을 반드시 일치시켜야 한다. • 수명을 고려하면서 소유권 규칙을 지켜야 한다. • 부실한 자료 구조와 알고리즘 • 가장 기본적인 자료 구조와 알고리즘만 존재한다. • C++이나 Python에 있는 다양한 함수들이 Rust에는 존재하지 않는다. 2021 알고리즘 컨퍼런스 Rust로 알고리즘 문제 풀어보기
  • 5. PS에서의 Rust • 그러면 굳이 왜? • 불편한 콘솔 입출력 • 아 이건 답이 없… (X를 눌러 조의를 표하세요.) • 특히 입력 라인 수가 많을수록 매우 불리해진다. • 엄격한 언어 문법 • 품질이 높은 코드를 작성하게 된다. • 메모리 관리를 잘 하고 있는지 확인할 수 있다. • 부실한 자료 구조와 알고리즘 • 자료 구조와 알고리즘을 직접 구현해보며 이해하는 게 도움이 된다. 2021 알고리즘 컨퍼런스 Rust로 알고리즘 문제 풀어보기
  • 6. A + B (BOJ 1000) - C++ 2021 알고리즘 컨퍼런스 Rust로 알고리즘 문제 풀어보기
  • 7. A + B (BOJ 1000) - Rust 2021 알고리즘 컨퍼런스 Rust로 알고리즘 문제 풀어보기
  • 8.
  • 9. GCD와 LCM (BOJ 2609) - C++ 2021 알고리즘 컨퍼런스 Rust로 알고리즘 문제 풀어보기
  • 10. GCD와 LCM (BOJ 2609) - Rust 2021 알고리즘 컨퍼런스 Rust로 알고리즘 문제 풀어보기 std::gcd, std::lcm? 그런 거 없다.
  • 11. GCD와 LCM (BOJ 2609) - Rust 2021 알고리즘 컨퍼런스 Rust로 알고리즘 문제 풀어보기
  • 12. 다음 순열 (BOJ 10972) - C++ 2021 알고리즘 컨퍼런스 Rust로 알고리즘 문제 풀어보기
  • 13. 다음 순열 (BOJ 10972) - Rust 2021 알고리즘 컨퍼런스 Rust로 알고리즘 문제 풀어보기 std::next_permutation? 어림도 없다.
  • 14. 다음 순열 (BOJ 10972) - Rust 2021 알고리즘 컨퍼런스 Rust로 알고리즘 문제 풀어보기
  • 15. Rust 자료 구조 • 기본 자료 구조들은 구현되어 있다. 다만, 익숙한 이름이 아닐 뿐… • 스택(Stack) : std::stack std::collections::Vec • 큐(Queue) / 덱(Deque) : std::queue, std::deque std::collections::VecDeque • 링크드 리스트(Linked List) : std::list std::collections::LinkedList • 맵(Map) : std::map std::collections::HashMap • B-트리(B-Tree) : std::collections::BTreeMap • 셋(Set) : std::set std::collections::HashSet/BTreeSet • 우선순위 큐(Priority Queue) : std::priority_queue std::collections::BinaryHeap 2021 알고리즘 컨퍼런스 Rust로 알고리즘 문제 풀어보기
  • 16. 계단 오르기 (BOJ 2579) - Rust 2021 알고리즘 컨퍼런스 Rust로 알고리즘 문제 풀어보기
  • 17. 제로 (BOJ 10773) - Rust 2021 알고리즘 컨퍼런스 Rust로 알고리즘 문제 풀어보기
  • 18. BOJ 수열 1 (BOJ 13323) - Rust 2021 알고리즘 컨퍼런스 Rust로 알고리즘 문제 풀어보기
  • 19. Rust를 배우고 싶다면… • Rust 공식 가이드라인 문서 : https://doc.rust-lang.org/book/ • A Tour of Rust : https://tourofrust.com/ • 러스트 프로그래밍 공식 가이드 (제이펍, 2019) • Contest Algorithms in Rust (https://github.com/EbTech/rust-algorithms) • Common Data Structures and Algorithms in Rust (https://github.com/utilForever/algorithm-rs) 2021 알고리즘 컨퍼런스 Rust로 알고리즘 문제 풀어보기
  • 20. TL; DR 2021 알고리즘 컨퍼런스 Rust로 알고리즘 문제 풀어보기