본문 바로가기

전체보기126

정렬 - K번째 수 정렬 - K번째 수 문제 출저 - 프로그래머스 programmers.co.kr/learn/courses/30/lessons/42748 풀이 생각 1. 특정 범위를 잘라서 정렬하자 2. 정렬한 배열의 k번째 수 push My code 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 #include #include #include using namespace std; vector slice(const vector& array, int a, int b){ return vector(array.begin()+a, array.begin()+b); } vector solution(vector array, vector commands) { vector answer;.. 2020. 11. 15.
우선순위 큐, 그리디 - 허프만 압축 허프만 압축 허프만 압축이란? 어떤 데이터를 전송할 때, 한 글자를 1byte(8bits)로 전송하게 되면 글자수 * 8 의 bits가 쓰인다. 허프만 압축은 빈도수가 높은 글자를 짧은 bits로, 빈도수가 적은 긴 bits로 인코딩하는 압축방법이다. 문제 encoder : ASCII 코드로 표현되어 있는 txt 파일을 입력받아 encoding하여 압축 파일 생성하기 decoder : encoder를 통해 encoding된 압축 파일을 입력받아 원본 ASCII 코드로 표현되어 있는 txt 생성하기 단, 문장이 길 때 ASCII 코드로 표현되어 있는 파일보다 크기가 작아져야 함 풀이생각 1. 각 ASCII Character의 빈도수를 세야 한다. => hash 를 사용하여 쌍을 만들자. => unorder.. 2020. 11. 12.
[ 3D Modeling ] Procedural Polygon Mesh Procedural Polygon Mesh Procedural Polygon Mesh Procedural 하게 방법을 이용해서 Polygon Mesh를 생산해 내는 방법이다. 제일 많이 쓰는 방법이 Fractal이다. 기준이 되는 Geometry가 하나 있고, 이 Geometry를 만나면 이렇게 그려라 하는 규칙이 있다. 그러면 계속 확장해 가게 된다. 어떤 선에 규칙을 적용시켜보자. 이 하나의 규칙을 계속 적용해 나가면 위처럼 계속 나아갈 것이다. 위 규칙을 삼각형의 선들에 적용시켜 보자. 이런 식으로 계속 나아가게 된다. 이를 이용하면 굉장히 복잡한 지형을 모델링 없이 만들 수 있게 된다. ex) 풀이나 산 등을 만들 때 사용된다. [참고] Interactive Computer Graphics: A .. 2020. 10. 24.
[ 3D Modeling ] Sweep Representation Sweep Representation Polygon 말고 다른 걸로 표현해보자. 어떤 평면을 한바퀴 돌려서 만들어보자. Sweep. 그래서 외곽선만 주고, 중심축만 주면 3D를 표현할 수 있다. 이것도 어떤 외곽선을 돌려서 만든 3D 물체이다. 이것은 중심축에서 얼마나 떨어져 있나 거리만 표시해주면 된다. 그럼 중심축이 휘면 물체도 휘게 된다. 만약 많이 휘게 되면 접히는 부분이 생길 수도 있어 주의해야 한다. [참고] Interactive Computer Graphics: A Top-Down Approach with Shader-based OpenGL 6th edition / 저자: Edward Angel, Dave Shreiner / 출판사: Pearson Education 2020. 10. 24.
[ 3D Modeling ] Polygonal Representation Polygonal Representation 3D Object Modeling이란? 어떤 것들을 정규화된 형식으로 표현하는 것이라고 말할 수 있다. 어떤 물건 혹은 물체 등을 3차원에 존재하는 물건 혹은 물체 등으로 형식적인 방법으로 Representation하는 것이라고 할 수 있다. Representation 어떻게 표현할 것인가. 어떤 데이터로 바꿔서 저장할 것인가. 결과적으로 데이터가 저장된 형식이 중요하다. 그런데 이 데이터가 바뀌니(캐릭터가 움직이는 등) 바뀌는 것에 대응하는 방법들을 고민해야 했다. 어떻게 하면 데이터를 잘 저장하고, 잘 표현할 지 고민하는 분야가 그래픽스 분야이다. modeling에 필요한 데이터를 어떻게 만들까도 고민했다. 어떻게 표현할까에 대한 방법에는 여러가지가 있다... 2020. 10. 24.
[ 컴퓨터구조 ] MIPS Design Principles MIPS Design Principles 하드웨어 설계 원칙 1. Simplicity favors regularity 간단해지기 위해서 같은 형태를 사용하는 것이 좋다. (Operation 글) - Arthmetic Operation은 동일한 형태를 지닌다. - 고정된 instuction의 size - instruction formats의 small number - Opcode는 항상 6bit로 이루어진다. 2. Smaller is faster 적을수록 더 빠르다. (Operands 글) - 적은 수의 register, 적은 수의 instruction set을 가짐으로써 빠르고 작게 구현 - 제한된 addressing modes의 수 3. Make the common case fast 자주 생기는 일을 .. 2020. 10. 22.
[ 컴퓨터구조 ] MIPS Instructions (+Instruction to binary) MIPS Instructions (+Instruction to binary) MIPS instruction의 종류와 instruction이 어떻게 binary code로 바뀌는지 살펴보자. 사람과 컴퓨터는 소통해야 한다. 소통하는 과정은 크게 3가지로 볼 수 있다. High-Level Language ( C언어 ) 가 compiler를 통해 MIPS Assembly Language로 변환되고, Assembler를 통해 기계가 이해할 수 있는 Binary machine Language로 변환된다. 여기서 MIPS Assembly Language 단계에서 예를 하나 들어보자. add $t0, $s1, $s2 $s1 과 $s2 를 더해 $t0 에 저장하라는 뜻이다. 이것은 하나의 명령어, 즉 하나의 instr.. 2020. 10. 22.
재귀 - 2진수 변환 재귀 - 2진수 변환 문제 출저 - 코드업 codeup.kr/problem.php?id=1920 풀이 생각 1. 2진수로 표현한다. => 결국 2로 나누는 연산과 관련 있을 것임 => 2로 나눈 나머지가 1이면 1, 0이면 0을 붙여나가주자 2. 출력값을 역순으로 해주어야 함 => 스택으로 구현 * 그런데 이 문제에서 for문 사용이 불가해 채점이 불가했음 => 스택말고 string으로 구현하고, 역순으로 만들어주고 출력해주자 my code (stack) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 #include #include using namespace std; vector binar.. 2020. 9. 28.
[ OpenGL ] GLEW + GLM 설치 및 설정 GLEW + GLM 설치 및 설정 이전 글(GLFW 설치 및 설정)과 이어서 작성하였습니다. ● GLFW 설치 및 설정 -> inyongs.tistory.com/117 ● 목차 1. GLEW 설치 및 설정 2. GLM 설치 및 설정 맥은 GLEW를 따로 다운받지 않고 최신버전으로 할 수 있습니다. 대신 4.1버전까지 사용할 수 있습니다. 맥을 사용하신다면 GLEM은 건너뛰고, GLM만 설치하면 됩니다. (버전 4.1에 대한 내용은 맨 마지막 코드에 있음) 1. GLEW 설치 및 설정 GLEW (OpenGL Extension Wrangler Library) 사용하는 이유 비주얼 스튜디오에 있는 window header 파일이 OpenGL 1.5 버전까지만 지원합니다. (현재는 대략 4.7) header 파.. 2020. 9. 20.
Graphics Pipeline architecture Graphics Pipeline architecture ● 순서 1. Vertices (Application program) 2. Vertex Processor 3. Clipper and Primitive Assembler 4. Rasterizer 5. Fragment Processor 6. Pixels (Display) Application에서 Vertices(3차원 상의 점들) 이 들어오고 Vertex Processor에서 vertex processing을 통해 2차원으로 가져오고 Clipper를 통해 이미지를 자르고 Primitive Assembler를 통해 어떤 도형인지 알아내고 Rasterizer를 통해 알아낸 도형에 해당하는 pixel들을 알아내고 Fragment Processor에서 pixe.. 2020. 9. 20.
[ OpenGL ] GLFW 기본 + 설치 GLFW 기본 + 설치 ● 목차 1. GLFW 기본 2-1. GLFW 설치, 설정 2-2. window 띄워보기 1. GLFW 기본 GLFW (Graphics Library FrameWork) 의 등장 OpenGL로 window를 띄우고 원하는 컨텐츠를 띄울 수 있다. 그런데 일반 window는 OpenGL을 사용할 수 있도록 연결되어 있지 않다. 이 때 context라는 것이 필요하다. ● OpenGL의 기본 동작 1. 셋팅 2. 그리기 예를 들어서 1. 셋팅 : 앞으로 내가 그리려는 색은 빨간색이야 2. 그리기 : 선을 그린다. => 이러면 빨간 선이 그려지게 된다. 그렇다면 색을 지정하는 부분과 선을 그리는 부분이 독립되어 있다는 것이다. 선을 그릴 때 무슨 색이 저장되어 있는지 누군가 알고 있어야.. 2020. 9. 15.
완전 탐색 - 소수 찾기 보호되어 있는 글 입니다. 2020. 9. 3.
[ C# ] 배열 배열 1. 일차원 배열 - 기본 개념 같은 데이터형 + 변수명 + 순차적인 메모리 나열 같은 데이터형: 메모리의 크기가 같음. 변수명: 같은 이름의 변수를 구분하기 위해 인덱스가 필요 (arr[i]) - 참조형 new를 통해 생성 - Array로부터 파생된 참조형 - foreach 사용 가능 foreach를 통해 편하게 읽어낼 수 있음. 그러나, 수정 불가능. 읽기 전용으로 사용. - 선언 형식 데이터형[] 배열명; int[] array_name; - 생성과 초기화 int[] array; array = new int[] {1,2,3}; // 코딩하다 보면 가변적인 것이 더 유용함. array = new int[3] {1,2,3}; // 동적 int[] array = new int[3] {1,2,3}; i.. 2020. 9. 2.
[ C# ] C# 기본 문법 C# 기본 문법 1. 연산자 - 단항 연산자 +, -, !, ~, ++, -- 등 !는 bool형에만 사용 - 산술 연산자 *, /, %, -, + string에서 +는 문자열 연결 “5” + “5” = 55 5.01f + "5" = 문자열 5.015 3.14f + "5" = 문자열 3.145 - 시프트 연산자와 관계 연산자 , >=, , ==, != 관계 연산자의 결과는? true, false - is 연산자 형식 호환을 조사하는 연산자 형식 ‘변수’ is ‘클래스형 or 데이터형’ A is B 결과는 true, false 박싱/언박싱 변환, 참조 변환에서 사용 결과값 : 호환 안 됨 호환됨 호환됨 - as 연산자 역할 형변환과 변환 조사 캐스트 연산자의 역할과 불변환은 null 리턴 참조, 박싱, 언.. 2020. 9. 2.
[ C# ] 데이터형, 변환, 표준 입력형식 데이터형, 변환, 표준 입력형식 1. 데이터형 - 기본 데이터형 C#의 데이터형 object로부터 파생된 객체 System.Object == object 데이터형은 CTS에서 정의된 객체 - 정수형 bool: System.Boolean, 1byte char: System.Char, 2byte byte: System.Byte, 1byte sbyte: System.SByte, 1byte short: System.Int16, 2byte ushort: System.UInt16, 2byte int: System.Int32, 4byte uint: System.UInt32, 4byte long: System.Int64, 8byte ulong: System.UInt64, 8byte - 실수형 float: System... 2020. 9. 1.