전체 글

1 11 66 286 1001 3003 8008 19448 43758 92378 1 10 55 220 715 2002 5005 11440 24310 48620 1 9 45 165 495 1287 3003 6435 12870 24310 1 8 36 120 330 792 1716 3432 6435 11440 1 7 28 84 210 462 924 1716 3003 5005 1 6 21 56 126 252 462 792 1287 2002 1 5 15 35 70 126 210 330 495 715 1 4 10 20 35 56 84 120 165 220 1 3 6 10 15 21 28 36 45 55 1 2 3 4 5 6 7 8 9 10 문제를 표로 나타내보자면 위와 같다. 맨 아래를 0층에선 아파트에는 0층부터..
이번 문제는 여지껏 배웠던 C++ 지식을 최대한 활용하여 풀어봤다. 우선은, 기존 main에 다 때려박았던 걸 조금 분리 해볼 생각이었다. #pragma once #define interface struct __interface ISol { virtual void Solution() = 0; virtual void Intput() = 0; virtual void Solved() = 0; }; ISOl 인터페이스를 하나 만들어줬고 #pragma once #include "ISol.h" class Sol: public ISol { void Solution() override; void Intput() override; void Solved() override; }; 해당 ISOL 인터페이스를 상속 받도록 S..
· Unity
어떤 언어를 써야 좋냐 어떤 직군이 전망이 좋냐 보단, 개발자를 준비해야 한다면 반드시 공통적으로 공부해야하는 부분은 같다. 먼저, 필자는 6년 전에 게임 개발을 첫 공부로 시작해서 현재, 백엔드 개발자로 근무하고 있으며, 기본기는 게임이던 백엔드던, 프론트던, AI 모듈 개발이던 크게 다르지 않았다. 다만, 필자의 경우 개발자가 되기 위해서 무엇을 배워야 할지 순서도 몰라 중구난방으로 공부하다가. 기본기가 매우 부족하다는 것을 뒤늦게 깨닫고, 아래 기술할 공부 순서대로 다시 새로 공부했다. 그럼 그 기본기를 익히기 위해선 어떤 공부를 해야 할지에 대해 적어보고자 한다. 1. 문법 공부. 언어는 아무거나 쉬운 것 부터 시작하라고 보통 하던데, 필자는 무조건 C++로 시작하는 것을 추천한다. 이유라고 한다..
이번 시간에는 소셜로그인 기능을 구현해보고자 한다. https://learn.microsoft.com/en-us/gaming/playfab/features/authentication/platform-specific-authentication/facebook-unity Setting up PlayFab authentication using Facebook and Unity - PlayFab Guides you through an example of PlayFab authentication using Facebook and Unity. learn.microsoft.com 강의에 앞서, 위 문서를 읽고 요 부분 까지는 직접 세팅 해보길 바란다. 직접 세팅을 끝냈다면, 예제 코드가 있는데 이 예제 코드를 우리 ..
해당 문제를 이해하기엔 내용이 잘 이해가 되지 않아 접근 방법을 보고 푼 문제이다. 일단 접근 방법에 대해선 그림으로 설명하고 풀이 과정에 대해 설명해보고자 한다. 예시 입력을 그림으로 표현해보았다. 우선 우린 저 배열에서 4가 나올 나올 때 까지 오름차순으로 저 주황색 막대기에 넣어줘야 한다. 4가 나올 때 까지, Push만을 반복하다가. 4가 나오면 PoP을 해준 뒤 다음 배열에 있는 것을 바라본다. 곧바로 POP을 해주면된다. 이 때, 6을 바라보아야 하는데, 이 때 3과 4는 사용했고 5,6만 들어갈 수 있다. 대충 문제의 접근 방법은 저 그림들로 설명이 가능하다 그럼 이것을 코드로 생각을 해보아야 하는데. 가장 먼저, 어떤 변수들을 사용할 지를 생각해보는 것이다. Input N, Array, 막..
해당 문제는 DP 알고리즘으로 풀었다. 물론, 이렇게 푸는 것 보다 소인수분해의 성질을 이용하면 쉽게 풀 수 있다고 하는데. 약간의 자존심? 때문에 어떻게든 DP로 풀어보겠다고 여러가지 시도를 해보면서 알아낸 것들을 적고자 한다. 1. C++에서 long long 타입은 20! 까지만 구할 수 있다. 물론 unsigned 시 65! 까지 구할 수 있지만 그 이후로는 불가능하다. 이를 해결하기 위해선 C++에선 따로, String으로 변환하고 자르고 붙이는 노가다를 해줘야 했고. 지원해주는 공식 라이브러리 조차 없다보니, 차후 이런 비슷한 문제가 나왔을 때 풀기가 너무 어려울거라 생각했다. 하여, BigInteger를 공식으로 지원하는 C#, JAVA 중 C#으로 구현해보았다. using System; u..
공유된 자원에 여러 개의 프로세스가 동시에 접근하는 현상을 막고자 전 시간엔, Atomic을 배웠다. 하지만 Atomic의 단점을 복습해보자면 연산이 느리고, 어디에서든 사용해선 안된다고 하였다. 그 어디에서든이 어떤 상황인지 C++ 코드를 통해 알아보자. atomicav; void Push() { for (int32 i = 0; i < 10'000; i++) { av.push_back(i) } } 가령 STL vector를 사용한다고 했을 때, 해당 STL은 모두 싱글 쓰레드 기준으로 만들어진 라이브러리다 보니 에러가 발생한다. 이 해당 에러에 대해선 바로 다음에 설명하겠고, 여하튼 atomic을 사용해서 vector의 push_back을 사용하고 싶지만, 위 코드에서는 문법 에러가 날 것이다. 즉 A..
이전 강의에선, API 공식문서를 읽는 방법에 대해 알아보았고, 실제로 문서를 보고 API를 적용하여 계정생성을 하는 법 까지 알아보았다. 이어서 로그인 및 계정 생성을 완성해보고자 한다. using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class LoginWindowView : MonoBehaviour { public InputField Username; public InputField Password; public InputField ConfirmPassword; public Button PlayAsGuestButton; public Button Regist..
해당 문제는 2진 탐색 알고리즘으로 풀 수 있다. 입력 첫째 줄에는 오영식이 이미 가지고 있는 랜선의 개수 K, 그리고 필요한 랜선의 개수 N이 입력된다. K는 1이상 10,000이하의 정수이고, N은 1이상 1,000,000이하의 정수이다. 그리고 항상 K ≦ N 이다. 그 후 K줄에 걸쳐 이미 가지고 있는 각 랜선의 길이가 센티미터 단위의 정수로 입력된다. 랜선의 길이는 2^31-1보다 작거나 같은 자연수이다. 입력에선 랜선의 개수 K, 필요한 랜선의 개수 N, K줄에 걸쳐 이미 가지고 있는 각 랜선의 길이를 받아야 한다. 이 때, 중요한 것은 2의31승 - 1 즉 21억 int의 최대값을 의미한다. 이는 K가 10,000이 입력되고 각 줄 마다 랜선에서 int의 최대값 ( 약 21억 ) 을 모두 더..
글을 쓰기 앞 서, 쓰레드(Thread)에 대한 개념만 간단하게 설명하고자 한다. 왜 필요한가? 여러 작업을 동시에 수행하려면, 병렬로 처리해야 하기 때문에. 멀티 프로세스와 멀티 쓰레드의 차이는? Heap 영역 혹은 Data 영역의 자원을 공유할 수 있다. 쓰레드 별로 각각의 Stack 메모리를 갖고 있다. Atomic을 쓰는 이유와 멀티 쓰레드의 문제점 자원을 공유하기에 생기는 문제로 경합문제가 있다. void Add() { for (int32 i = 0; i < 100'0000; i++) { sum++; } } void Sub() { for (int32 i = 0; i < 100'0000; i++) { sum--; } } int main() { thread t1(Add); thread t2(Sub)..
독학백수
독학하는 백수