본문 바로가기
  • 실행력이 모든걸 결정한다
반응형

분류 전체보기580

포스팅 100개 돌파! 나의 마음가짐과 IT 버킷리스트 소개 포스팅이 100개가 넘은 기념으로, 이 포스팅에서는 본인이 어떤 마음가짐으로 공부를 하는지 소개하겠다. 세상의 과학 기술은 나날이 폭발적으로 발전해나가고 있는 만큼 이 분야에 몸을 담그고 있는 엔지니어들은 새로운 기술들을 배우고 적응해 나가야 강력한 경쟁력을 가질 수 있는데, 신 기술도 발전 속도에 비례해 그 개수가 기하급수적으로 많아지고 있다. 그렇기 때문에 우리들은 수요가 많은 기술들을 조사하여 좋은 기술들만 효율적으로 배워나가야 된다고 본다. 어떤 트랜디한 기술도 1년도채 가지 않을 수도 있고 몇십년 이상 오래 살아 남을 수도 있다. 그러니 자신이 배우고 있는 기술도 신 기술이 얼마든지 대체할 수 있고, 그 신기술에 새롭게 갈아탈 상황도 얼마든지 있을 수 있음을 충분히 염두하고 대비하는 마인드가 필.. 2020. 9. 12.
[그리디, 난이도 중하] 프로그래머즈, 체육복 체육복 여벌이 있는 학생들이 옆에 있는 학생에게 체육복을 빌려주었다고 했을 때 체육복을 가지고 있는 최대 학생 수를 구하면 되는 문제이다. 나의 풀이는 이렇다. boolean 배열 2개를 생성하고 다음 조건에 맞게 true/false를 부여해야 한다. phy[ ] : 체육복을 1벌 이상 가지고 있는지 여부를 판단 phy_reserve[ ] : 체육복을 2벌 가지고 있는지 여부를 판단 (여벌) 초기 bool phy[ ]는 true로 초기화 해두었다. reserve벡터를 참조하여, 체육복을 2벌 가지고 있는 학생은 phy_reserve 배열값을 true로 만든다. 그리고 lost벡터를 참조하여 2가지 경우에 대해 처리해준다. 여벌을 가지던 학생이 도난 당하면 1벌 남으므로 phy_reserve 배열 값을 f.. 2020. 9. 12.
[완전탐색, 난이도 중하] 프로그래머즈, 카펫 brown+yellow 개의 격자는 brown+yellow의 두 약수 n,m 의 곱으로 이루어질 수 있다. 이렇게 해서 가능한 두 약수의 조합들을 완전탐색하는 문제이다. 매개변수로 들어온 정수의 약수들을 모두vector에 담아서 그 vector을 리턴하는 함수를 추가로 만들었다. 두 약수를 n, m이라고 하자. 아래와 같이 n x m 카펫이 주어 졌을 때, 갈색 격자의 개수는 m*2+n*2-4 이다. 주어진 갈색 격자의 개수와 같게 나왔을 경우 m,n 값을 answer에 담아 리턴하면 된다. 테스트 케이스 13개 모두 통과 #include using namespace std; vector get_prime_numbers(int n){ vector prime_numbers; for(int i=1;i 2020. 9. 11.
[Heap, 난이도 중] 프로그래머즈, 이중우선순위큐 힙은 최댓값 및 최솟값을 찾아내는 연산을 빠르게 하기 위해 고안된 완전이진트리이다. 삽입, 삭제의 시간 복잡도가 O(logn) 밖에 안된다. 구조를 최대 힙 기준으로 간단히 설명 해보자면 이렇다. 삽입 : 처음에는 힙의 마지막 인덱스에 두고 부모 노드보다 클 경우 계속해서 부모 노드와 swap 해나가면 된다. 삭제 : 힙의 마지막 인덱스를 root에 두고 두 자식 노드들중 큰 값을 가지는 노드와 swap해나가면 된다. 더 자세한 설명이 필요하다면 위키백과를 확인해보면 좋다. ko.wikipedia.org/wiki/%ED%9E%99_(%EC%9E%90%EB%A3%8C_%EA%B5%AC%EC%A1%B0) 힙 (자료 구조) - 위키백과, 우리 모두의 백과사전 위키백과, 우리 모두의 백과사전. 둘러보기로 가기 .. 2020. 9. 11.
C++ Vector 사용법 Vector은 선언, 삽입, 삭제, 초기화가 간편한 라이브러리다. 이 포스팅에서는 다양한 Vector 사용 예시를 소개하겠다. 예시를 위주로 설명하였으니 충분히 이해가 될 것이다. 소스 코드를 보기 전에 한가지 설명해 두고싶은 것이 있는데 insert, erase 함수에서는 범위 지정 시 주소 값을 이용한다는 점과 범위의 마지막 값은 포함하지 않는다는 점 2가지를 꼭 기억해두자. 소스 코드 //김코더 김주역 kimcoder.tistory.com #include #include using namespace std; int main(){ cout 2020. 9. 11.
C++ Vector 중복 요소 제거하기 1. 필요 헤더 vector, algorithm 2. 필요 함수 sort : 범위 퀵 정렬 unique : 연속된 중복값을 맨 뒤로 보내고, 중복값이 시작되는 주소를 리턴한다. erase : 범위 모두 제거 3. 소스 코드 ※ unique 함수는 연속된 중복값을 찾으므로 미리 sort로 정렬을 해줘야 한다. #include #include #include using namespace std; int main() { vector s; s.push_back(3); s.push_back(5); s.push_back(7); s.push_back(1); s.push_back(4); s.push_back(3); s.push_back(4); s.push_back(4); s.push_back(9); cout 2020. 9. 11.
Sort 고득점 kit 풀이 완료, 후기 정렬은 대학 1학년 과정부터 나오는 알고리즘으로 매우 기초적인 개념이다. 그러나 방대한 데이터범위가 주어졌을 경우에는 시간 복잡도를 줄이지 않으면 안되는 상황이 오게 된다. 고득점 Kit의 3문제에서는 모두 퀵정렬(Quick sort)를 이용했으며 시간 복잡도는 O(nlogn)이다. C++에서는 algorithm 헤더 파일에 sort함수가 내장되어 있고 sort함수의 3번째 인자에 boolean을 반환하는 함수를 넣어줘서 어떤 기준으로 정렬할 것인지도 정할 수 있다. 정렬 알고리즘은 그리디, 다이나믹, 크루스칼 등등 많은 알고리즘 안에서 이용 되므로 배우지 않으면 안된다. 문제모음 [난이도 하] H-Index kimcoder.tistory.com/96 [난이도 중] 가장 큰 수 kimcoder.tisto.. 2020. 9. 11.
2020 SCPC/Programmers 월간 코드 챌린지 결과 2020 SCPC 예선 2차까지 진출 Programmers 월간 코드 챌린지 4910명중 163위 역시 알고리즘을 배우니 문제를 봤을 때 접근법부터가 달라지는 것 같다. 그래도 아직 갈길이 멀기 때문에 알고리즘 공부는 멈추지 않을 것이다. 2020. 9. 10.
[정렬, 난이도 하] 프로그래머즈, H-Index 어떤 과학자가 발표한 논문 n편 중, h번 이상 인용된 논문이 h편 이상이라고 했을 때 가능한 h의 최댓값을 구하는 문제이다. 단순히 citations를 오름차순으로 정렬하면 문제를 쉽게 해결할 수 있다. 오름차순으로 정렬한 후에 n-h번째에 있는 논문의 인용 수가 h이상이라는 뜻은, 논문의 인용수가 h이상인 논문의 수는 h개 이상이라는 뜻이 된다. 본인의 소스코드에서 사용한 정렬은 시간 복잡도가 O(nlogn) 이므로, 시간복잡도도 O(nlogn) 밖에 되지 않는다. 테스트케이스 16개 모두 통과 #include #include int maxi(int a,int b){ if(a>b) return a; else return b; } using namespace std; int solution(vector.. 2020. 9. 10.