일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- DirectX 12
- codility
- 병행성 관련 오류
- 그리디 알고리즘
- 다이나믹 프로그래밍
- 프로그래머스
- 병행성
- I/O장치
- 멀티쓰레드
- 락
- 자료구조
- DirectX12
- 컨디션 변수
- directx
- 운영체제
- 그리디알고리즘
- OS
- 스케줄링
- 쓰레드
- 파일시스템 구현
- 다이나믹프로그래밍
- 영속성
- 타입 객체
- Direct12
- 멀티프로세서
- 렌더링 파이프라인
- 동적계획법
- 디자인패턴
- 알고리즘
- 백준
- Today
- Total
목록분류 전체보기 (500)
기록공간

운이 좋았던 건지, 아니면 배수를 높게 뽑은 건지 기대하지 않은 코딩테스트에 합격하여 1차 면접을 보게 되었다. 7월 7일날 10시에 일정이 잡혀 열심히 준비하였다. T면접은 면접관들 앞에서 제시된 문제를 설명하면서 해결하는 과정의 면접이다. 이를 통해 면접자의 문제해결 역량과 기본기를 동시에 평가하게 된다. 기술 면접이였기에 게임에서 사용하는 알고리즘들을 공부하였다. 준비물에 공학용 계산기가 있었기 때문에 수학 문제도 같이 나오는가 싶어서, 선형대수학쪽을 복습하였다. 면접날이 다가왔다. 코로나로 인해 면접은 비대면으로 Skype통해 진행되었다. 부정행위 방지를 위해 주변을 찍고, 신분증 검사를 진행했다. 비대면인 만큼 회사에서는 정말 철저하게 진행했다. 면접관 세 분이 들어왔다. 친절하게 인사를 해주셨..

서류전형에 합격하여 6월 14일에 코딩테스트를 보게 되었다. 원래는 코딩테스트를 통과하면 본사에 가서 오프라인 시험을 보게 되지만, 시국이 시국인 만큼 오프라인 시험을 없애고 코딩테스트를 어렵게 냈다고 한다. 코딩테스트라는게 꾸준히 준비해야 하는 시험이므로, 시험이 다가왔을때 생각보다 느긋했다. 14일 결전의 날이 다가왔다. 컨디션이 중요했기에 긴장을 풀 수 있도록 시험 20분 전까지 게임을 즐겼다. 코딩 문제는 총 4문제가 나왔고, 제한 시간은 2시간이였다. 뭔가 꼬아놓은것 처럼 보이도록 장황하게 설명되어 있는 문제들이 많았지만, 평소에 충분히 준비했다면 풀 수 있는 문제들이였다. 아슬아슬하게 3문제를 풀었고, 나머지 1문제는 제출은 했지만 답이 정확하지 않았으므로 틀렸다고 생각한다. 카카오, 네이버 ..

문제가 길어보여 어려워 보이지만, 생각보다 간단한 문제였다. N마리의 폰켓몬 중 절반만큼 선택하는데, 폰켓몬이 가장 많은 종류부터 한 마리씩 선택하여 몇 종류의 폰켓몬을 선택 할 수 있는지 출력하는 문제이다. 여기서 핵심은 폰켓몬의 종류이다. 답 부터가 몇가지 종류를 선택 할 수 있는지를 물어보기 때문이다. 종류가 N / 2개 보다 많은 경우 종류별로 한마리씩 골라도 N / 2개를 넘어가므로, 최대로 고를 수 있는 종류 N / 2를 답으로 출력하면 된다. 만약 종류가 N / 2개 보다 적은 경우 종류별로 한마리씩 골라도 남은 갯수 만큼은 똑같은 종류에서 골라야 하므로, 폰켓몬 종류 수만큼 출력하면 된다. 코드는 다음과 같다. #include #include using namespace std; int s..

동적계획법을 사용하는 문제였다. 위의 예제를 표로 표현하면 다음과 같다. 이 표는 동적 테이블에 저장될 값들이다. 0부터 표현하는 인덱스 특성상 1~4, 1~3 범위를 그대로 표현하기 위해 5 x 4 크기의 배열로 만들었고, 0번째 행열은 값을 모두 0으로 설정하였다. 웅덩이 위치도 0으로 설정하였다. 0이 설정되면 지나 갈 수 없다. 이제 집과 물 위치를 제외하고 (x, y) 위치의 값은 (x - 1, y) + (x, y - 1)로 설정해주면 된다. 위 표에서 (1, 2)위치를 예로 들어보자. 위의 값이 1, 왼쪽 값이 0으로 1 + 0 = 1이다. (2, 4) 위치는 위의 값 1, 왼쪽 값 1로 1 + 1 = 2이다. 이 작업을 학교인덱스까지 해준다. 그러면 다음과 같이 된다. 집에서 학교까지 갈 수..

BFS/DFS 문제로 분류되었었는데 처음에는 잘 몰랐다. 이미 입력된 값에 +, -를 하는 문제이다. 처음에 +와 - 두가지 경우가 있다. 그리고 +를 선택하면 두번째에 +와 - 두가지 경우가 올 수 있다. 이것이 마지막 번째까지 반복된다. 즉, 배치 가능한 모든 +, -의 경우의 수를 찾는다. 이런 이유로 BFS/DFS 문제로 분류되었다고 생각한다. 그림으로 표현하면 다음과 같다. +, -를 해주는 작업은 재귀함수를 사용해주면 된다. 재귀함수로 처음부터 끝까지 +또는 -를 해주는 방향으로 나아가다, 끝까지 도달했을때 target 값과 같은지 확인하고 같다면 answer값을 1 증가시켜주면 된다. 코드는 다음과 같다. #include using namespace std; void search(const ..

백트래킹(backtracking)은 한정 조건을 가진 문제를 풀려는 전략이다. 문제가 한정 조건을 가진 경우 원소의 순서는 해결 방법과 무관하다. 이런 문제는 변수 집합으로 이루어지는데, 한정 조건을 구성하기 위해서 각각의 변수들은 값이 있어야 한다. 백트래킹은 모든 조합을 시도해서 문제의 해를 찾는다. 이것이 가지는 장점은 많은 부분의 조합을 배제(가지치기)하는 것이다. 이로 인해 풀이 시간이 단축된다. 예를 통해서 백트래킹을 알아 보도록 하자. 가장 쉽게 접할 수 있는 예시로는 4-Queens Problem이 있다. N-Queens Problem은 크기가 N * N인 체스판 위에 퀸 N개를 서로 공격할 수 없게 놓는 문제이다. N이 주어졌을 때, 퀸을 놓는 방법의 수를 구하는 프로그램을 만들기 위해서..
객체 지향 프로그래밍 ( Object Oriented Programming ) 개요 객체 객체는 말 그대로 대상을 나타내는 단어이다. 예를 들면, 개인 한 명 한 명 또는 책 한 권 한 권을 객체라고 할 수 있다. 사람은 생김새와 성격이 똑같을 수 없기 때문에 개개인을 객체라고 할 수 있으며, 책 또한 내용이 같을지라도 한 권의 책에 흠집을 낸다고 해서 모든 책들이 전부 흠집 나는 것이 아니기 때문에 모두 객체라고 할 수 있다. 클래스 사람들은 일반적으로 같은 속성들을 가지고 있다. 여기서 속성이란 눈, 코, 입, 등의 신체부위를 의미한다. 책 또한 제목, 작가, 출판사 등의 같은 속성들을 가지고 있다. 사람, 책, 같은 객체들이 공통적으로 갖는 속성들을 모아서 정의 내린 것을 클래스라고 한다. (보통 ..

round 메서드는 라이브러리 내에 정의되어 있다. double round(double num); float round(float num); long double round(long double num); // template double round(T x); round는 인자로 들어온 값을 반올림해서 반환하는 메서드이다. 맨 밑의 경우처럼 템플릿 함수로 구현되어 있어 꼭 위 함수들의 변수형을 맞추지 않아도 된다. round 함수를 사용한 결과 값은 다음과 같다. round(3.2) ==> 3 round(3.7) ==> 4 round(-3.2) ==> -3 round(-3.7) ==> -4 위 예제를 코드로 표현하면 다음과 같다. #include #include using namespace std; in..