본문 바로가기

분류 전체보기166

[C++ 기초] 표준 입출력 스트림(Stream)의 동기화 및 입출력 속도의 최적화 표준 입출력 스트림, 스트림 객체 표준 입출력 스트림이란, 컴퓨터 프로그램과 입출력 장치(키보드나 마우스 / 모니터 등) 사이에 입출력 데이터를 바이트의 흐름의 형태로 전송하기 위해 미리 연결되어 있는 통로이다. C와 C++에는 이러한 입출력 스트림과, 해당 스트림을 관리하기 위한 스트림 객체가 존재한다. C: stdin(입력), stdout(출력), stderr(에러) C++: cin(입력), cout(출력), cerr(에러), clog(로그) (+ wcin, wcout, wcerr, wclog) 기본적으로 C와 C++의 표준 입출력 스트림 사이에는 각각 입출력 연산 후 동기화를 수행하도록 설정되어있고, C의 표준 입출력 스트림이 사용하는 버퍼(buffer)를 C++의 표준 입출력 스트림들도 같이 사용.. 2023. 5. 13.
[Baekjoon] 15651번: N과 M (3) https://www.acmicpc.net/problem/15651 15651번: N과 M (3) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 문제 해결 과정 착안 1부터 \(N\)까지의 자연수를 중복을 허용하여 뽑아 수열을 만든다. 만들어지는 모든 수열을 출력해야하므로 수열의 길이가 \(M\)이 될 때까지 재귀를 통해 수열을 만들고, 길이가 \(M\)이 되면 출력한다. 구현 이전 포스트의 코드와 대부분 유사하여 이전 포스트의 코드를 수정하여 문제를 해결하였다. 중복된 수를 다시 뽑는 것이 가능하므로, Visited 여부를 확인할 필요.. 2023. 5. 13.
[Baekjoon] 2231번: 분해합 https://www.acmicpc.net/problem/2231 2231번: 분해합 어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이 www.acmicpc.net 문제 해결 과정 착안 주어지는 자연수 \(N\)에 대하여, 문제에서 정의되어있는 분해합이 \(N\)이 되는 수들 중에서 가장 작은 값을 출력하는 문제인데 분해합의 값이 \(N\)이 되는 숫자를 찾는 마땅한 방법이 없으므로 낮은 수부터 시작하여 직접 분해합을 구해보며(브루트 포스 알고리즘) 그 값이 \(N\)이 되는 값이 있는지 살펴보고자 하였다. 단, 이때 어떤 미지의.. 2023. 5. 12.
[Baekjoon] 15649번: N과 M (1) https://www.acmicpc.net/problem/15649 15649번: N과 M (1) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 문제 해결 과정 착안 주어지는 입력 \(N\), \(M\)에 따라 \(N\) 개의 정점을 가지는 그래프를 만든 다음, 각 정점에 대하여 인접 정점을 오름차순으로 방문 가능하도록 자신을 제외한 모든 정점들과 연결한다. 만들어진 그래프로부터 \(M\) 개의 정점이 순회될 수 있는 모든 경로를 순서대로 출력하기 위하여 백트래킹(backtracking, 퇴각검색) 알고리즘을 구현하고자 하였다. // 의.. 2023. 5. 11.
[Unreal Engine 일반] 언리얼 프로퍼티(Property) 시스템(리플렉션, reflection) 리플렉션(reflection) 리플렉션은 실행시간(runtime)에 어떠한 객체가 자기 자신을 조사하는 기능으로, 표준 C++에서 객체의 다형 정보(dynamic_cast 연산자), 객체의 데이터형 식별(typeid 연산자), typeinfo 클래스 정보로써 나타나는 실행시간 데이터형 정보(runtime type information, RTTI)보다 더 포괄적인 개념으로, 런타임에서 객체의 정보 및 구조를 관리하거나 수정할 수 있도록 하는 기능들까지 포함하는 개념이다. 게임(엔진) 프로그래밍에 있어서 리플렉션 기능은 왜 필요할까? 리플렉션 기능이 게임 프로그래밍(특히 엔진 프로그래밍)에서 필수적인 이유는, 컴파일 타임에 만들어지는 객체의 정보 이외에도 런타임에서 객체의 정보들이 새로 추가되거나 수정될 수.. 2023. 5. 11.
[Baekjoon] 1620번: 나는야 포켓몬 마스터 이다솜 https://www.acmicpc.net/problem/1620 1620번: 나는야 포켓몬 마스터 이다솜 첫째 줄에는 도감에 수록되어 있는 포켓몬의 개수 N이랑 내가 맞춰야 하는 문제의 개수 M이 주어져. N과 M은 1보다 크거나 같고, 100,000보다 작거나 같은 자연수인데, 자연수가 뭔지는 알지? 모르면 www.acmicpc.net 고작 방금 받은 피카추로 꼬렛을 잡자마자 바로 사천왕의 자리를 넘보는 다솜짱(폼 미쳤다). 우리 같은 일반인들은 몇날 며칠을 노가다해서 푸키먼을 키우고 나서야 겨우 도달할 수 있는 사천왕이 있는 장소에 고작 방금 잡은 꼬렛 한 마리 가지고 1 분도 안돼서 턱밑까지 다가갔다 온 다솜짱은 정말 놀랍게도 푸키먼 번호와 이름은 잘 못 외우는지, 우리의 도움이 필요한 상황이다... 2023. 5. 10.