전체 글

오늘 배운 경험을 회고하며 레벨 업 하는 곳입니다. 모르는 것은 배우고 아는 것은 베풀 수 있는 개발자로 성장하겠습니다!
1. 버퍼 오버플로우(Buffer Overflow)란? 프로그램 실행 시 입력받는 값이 버퍼의 크기를 넘어가 버퍼 이후의 공간을 침범하는 현상을 버퍼 오버플로우라고 한다. 2. 문제점 버퍼에서 주의해야 할 점은 버퍼 오버플로우가 발생 시 버퍼 이후의 공간에 값이 들어차게 되는데 이 때 들어차는 방식이 밀어내기가 아닌 덮어쓰기 방식이다. 이 말은 4칸 짜리 버퍼 A B C D 가 있고 a b c d e의 입력을 받아 오버 플로우가 발생 한다면 현재 입력 받은 값을 밀어내는 것이 아닌 버퍼가 a b c d e의 값으로 덮어 씌어지게 된다. 예를 들어, 올바르게 버퍼 값을 받는다고 가정한 로직에서 고의로 버퍼를 초과시켜 이상한 값을 덮어씌운다면 로직이 의도한대로 실행되지 않아 위험성이 커지는데 해커들은 이러한..
백준 2110 https://www.acmicpc.net/problem/2110 2110번: 공유기 설치 첫째 줄에 집의 개수 N (2 ≤ N ≤ 200,000)과 공유기의 개수 C (2 ≤ C ≤ N)이 하나 이상의 빈 칸을 사이에 두고 주어진다. 둘째 줄부터 N개의 줄에는 집의 좌표를 나타내는 xi (0 ≤ xi ≤ 1,000,000,000)가 www.acmicpc.net 풀이 전 나의 생각 도현이의 집 N개의 좌표에 공유기를 설치할 것이다. 단, 가장 인접한 두 공유기 사이의 거리를 가능한 크게 설치하고 이 때 가장 인접한 두 공유기 사이의 거리를 최대로 하는 값을 구해야한다. 조건 - N (2 ≤ N ≤ 200,000) - C (2 ≤ C ≤ N) - xi (0 ≤ xi ≤ 1,000,000,00..
1. 어드레서블 에셋이란? 말 그대로 에셋에 어드레스, 즉 고유한 주소를 할당하는 것을 말한다. 새로 만들어진 것이 아닌, 에셋 번들의 편의성을 개선하기 위해 설계된 시스템이다. 2. 어드레서블의 장점 동적 로딩 - 게임 시작 시 에셋을 한 꺼번에 불러오는 것이 아닌 런타임 중에 동적으로 메모리에 에셋을 할당할 수 있기 때문에 효율적인 메모리 사용 및 로딩 시간을 단축 시킬 수 있다. 에셋 관리 - 메모리 로드/언로드 현황을 볼 수 있다. -> 에셋 번들을 불러와 그룹화할 수 있기 때문에 에셋 번들이 메모리의 로드, 언로드를 가능하게 해주고 이를 통해 메모리 사용 최적화 및 로딩 성능을 향상 시킨다. 원격 에셋 로딩 - 클라우드나 웹 서버와 같은 원격 위치에서 에셋 로딩을 지원한다. 이를 통해 개발자는 ..
백준 1253 https://www.acmicpc.net/problem/1253 1253번: 좋다 첫째 줄에는 수의 개수 N(1 ≤ N ≤ 2,000), 두 번째 줄에는 i번째 수를 나타내는 Ai가 N개 주어진다. (|Ai| ≤ 1,000,000,000, Ai는 정수) www.acmicpc.net 풀이 전 나의 생각 N개의 수에서 어떤 수가 다룬 수 두 개의 합으로 나타낼 수 있다면 "좋다" 라고 한다. 따라서 "좋다"를 만족하는 좋은 수가 몇 개인지 구해야한다. 조건 N(1 ≤ N ≤ 2,000) |Ai| ≤ 1,000,000,000, Ai는 정수 Solution 조건으로 알 수 있는 것은 일반적인 탐색 방법인 3중 for문을 이용한 방법은 2000 * 2000 * 2000의 계산 횟수로 시간 제한을 ..
1. 가상 메모리란? 가상 메모리는 컴퓨터의 RAM에 물리적으로 존재하는 것보다 더 크고 연속적인 개인 메모리 공간을 제공하기 위해 운영체제에서 사용하는 메모리 관리 기술이다. -> 메모리가 실제 메모리보다 더 많아 보이게 하는 기술 2. 가상 메모리 사용 배경 초창기 컴퓨터는 RAM의 용량이 애플리케이션의 주소보다 커야했기 때문에 메모리 부족 현상이 자주 일어났다. 이를 해결하기 위해 애플리케이션의 일부분만 기억장치에 올리는 오버레이 기법이 나왔지만 복잡성, 성능 오버헤드 등의 문제로 메모리 부족 현상을 결국해결하지 못했다. 그래서 애플리케이션을 실행할 수 있는 최소한의 메모리에 집중하여 RAM에 최소한의 메모리만 올리고 애플리케이션의 나머지는 디스크에 위치시키는 가상 메모리 기법이 나온 것이다. 빠른..
백준 3151 https://www.acmicpc.net/problem/3151 3151번: 합이 0 Elly는 예상치 못하게 프로그래밍 대회를 준비하는 학생들을 가르칠 위기에 처했다. 대회는 정확히 3명으로 구성된 팀만 참가가 가능하다. 그러나 그녀가 가르칠 학생들에게는 큰 문제가 있었다. www.acmicpc.net 풀이 전 나의 생각 팀원의 코딩 실력 N개가 주어지는데 이 중 3개의 실력을 골라서 0이 될 수 있는 경우의 수를 모두 구해야한다. 조건 1 ≤ N ≤ 10000 -10000 ≤ Ai ≤ 10000 Solution 조건을 보면 N은 최대 10000개 까지 주어질 수 있다. 일반적인 풀이법으로 생각해보면 요소 두개를 더해야 하니 2중 for문을 사용해야하고 더한 요소가 실제로 0을 만들 수..
RAII패턴이란? RAII(Resource Acquisition Is Initialization)패턴은 지역변수가 선얼될 때 생성자가 불리고, 스코프에서 벗어날 때 파괴자가 호출되는 것이다. 지역변수가 선언될 때 생성자가 불려지기 때문에 접근 가능시점에서 이미 리소스가 초기화되었음을 보장한다. 이를 통해 RAII패턴을 사용한 클래스 안의 메서드는 항상 초기화가 되어있음을 가정하고 동작할 수 있다. 초기화가 실패하면 throw되어 스코프 밖으로 넘어가면 자동으로 파괴자가 호출된다. 이는 가비지 컬렉션이 없는 C++에서 주로 사용하는 개념이고 C#을 사용하는 Unity에서는 가비지 컬렉션이 있기 때문에 직접 사용하는것은 흔하지 않다. 자동 리소스 관리 개념적으로 같은 기능들은 Instantiate - Des..
백준 2295 https://www.acmicpc.net/problem/2295 2295번: 세 수의 합 우리가 x번째 수, y번째 수, z번째 수를 더해서 k번째 수를 만들었다라고 하자. 위의 예제에서 2+3+5=10의 경우는 x, y, z, k가 차례로 1, 2, 3, 4가 되며, 최적해의 경우는 2, 3, 4, 5가 된다. k번째 수가 최 www.acmicpc.net 풀이 전 나의 생각 N개의 자연수로 이루어진 집합 U에서 3개의 선택된 수의 합이 집합 U에 포함되어 있어야 하며 최대의 수가 되는 값을 구해야한다. 조건으로 알 수 있는 것들 - N(5 자연수는 int형으로 설정한다. - x, y, z, k가 서로 같아도 된다. -> x, y, z, k가 중복될 수있다. Solution 아무리 N이 ..
Sh_Blog
Sh_RPG