![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/vAkIb/btreAIZYnBg/NUopk6UVGUJRWtB9egwwi1/img.png)
해커랭크 알고리즘 문제 풀면서 처음으로 만난 Advanced 문제...! 휴 정말 이름만큼 쉽지 않았습니다 ㅠ 문제의 조건 1. 배열을 오름차순으로 삽입정렬할 때 완전히 완료될 때까지 원소들이 몇 칸 움직이는지 구하기 저도 처음에 shift의 뜻을 정확하게 몰라서 몇 번 움직이는지로 생각하고 풀려 했는데 당췌 풀리질 않아서 구글링을 해 본 결과... 원소가 원래 있던 칸에서 정렬되는 칸까지의 이동거리를 구하는 것이란 것을 알게 되었습니다. 비트 연산자의 쉬프트 연산자를 생각하면 되나 봅니다... 그러면 처음에 단순하게 생각할 땐 2중 for문으로 하는 삽입정렬을 시도해서 swap이 있을 때마다 shift count를 증가시키는 방법이 있습니다. 하지만 2중 for문은 느리기 때문에 (O(n^2)) 배열이..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/eKtxKT/btrevZAdzAG/I7095riPcqkaLLICTIRIKk/img.png)
이번 문제는 완전 이지이지~~~ 문제의 조건 1. 정렬되지 않은 int 배열이 주어진다. (배열의 길이는 항상 홀수) 2. 여기서 중간값을 구해라. 네 이건 오름차순으로 정렬하고나서 가운데 인덱스의 원소 값을 추출하면 됩니다. 간단하쥬? #include int findMedian(vector arr) { //오름차순 정렬 후 시작 sort(arr.begin(), arr.end()); //배열의 길이는 항상 홀수니까 반으로 나눈 값의 몫만 구하면 됩니다. //여기서 왜 0.5 곱하기를 하냐고 물으신다면... //곱하기 연산이 나누기 연산보다 빠르거든요... int iMiddleVal = arr[arr.size() * 0.5f]; return iMiddleVal; } 아주 Easy
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/mX8eD/btrevYH0mn1/FZURblvn4XGYiEbfiQiHCk/img.png)
이것 또한 쉬운 문제였는데 문제 조건 까먹고 중복제거하다가 조금 시간을 소비했던 문제입니다. Discussions에서 중복제거 하지말라는 말 보고 정신 차림 ㅎ; 문제의 조건 1. 배열의 원소들을 오름차순 정렬한다. 2. 큰 원소에서 작은 원소를 뺐을 때의 차 중 가장 작은 값을 가지는 짝꿍([i, i+n])을 구한다. 3. 주어지는 배열의 모든 원소는 unique하다. (유일한 값만 들어있음) 4. 하지만 결과값은 최소값이 나오는 모든 수의 짝꿍들이 포함되어야 하기 때문에 중복되는 값들이 나올 수 있다. 배열의 원소 내 두 수의 차 중 가장 작은 값이 나오는 짝꿍을 구하면 되니까 모든 수를 계산할 필요는 없습니다. 그리고 1번 조건으로 오름차순 정렬을 하고나면 숫자가 작은 순서부터 큰 순서대로 차례차례..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/cXVjkH/btrexlvWFW3/UcSChUBmwI6gH3koRSHlrk/img.png)
와 이 문제에서 반나절 헤메다가 방금 풀어서 혼자 알기 아까워서 쓰는 글입니다. 구글링을 해 봐도 c++로 푼 건 없다시피해서... 비교적 간단한 코드로 풀게 되어서 공유하고자 합니다. 문제의 조건 1. 제시된 2차원 벡터 [숫자, 알파벳] 형태로 저장된 값을 오름차순 정렬하는데 인덱스 번호는 지키면서 해야 함 2. 정렬하기 전 배열의 0번째부터 배열길이의 절반까지의 알파벳은 '-'(dash)로 바꿈 3. 즉 2번을 먼저 수행한 후 key 값이라 할 수 있는 숫자를 기준으로 인덱스 순서를 지키면서 오름차순 정렬을 한 후 숫자는 제외하고 알파벳과 -(dash)만 출력을 해야 함 근데 이게 처음에는 단순하게 for문 돌려서 2번을 먼저 수행한 후에 의 sort() 함수를 쓰려고 했었어요. 왜냐면 문제를 대충..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/JH0ZE/btreaRQyIJo/DGNVzVKCeJBf6r4RLjw1ck/img.gif)
현생 사느라 바빠서 오랜만에 돌아오게 된 블로그...ㅠ.ㅠ 오늘부터 C++로 오목 게임을 만드는 과정을 포스팅하려고 해요. 글을 쓰는 이유는 제가 이걸 만들던 당시에 구글링을 참 많이 했는데 생각보다 정보가 없었거든요... 특히 학원 선생님이 원하시는 방향으로의 자료가 참 없었어요 ㅠ.ㅠ 그 당시에 알려주던 선생님이 무조건 코드를 다 써주는 스타일이 아니었어서 머리를 많이 쥐어뜯었던 것이 생각납니다. 덕분에 실력은 많이 늘었지만...ㅋㅋ 예전의 저처럼 이제 C++을 배우기 시작하신 분들께 도움이 되길 바라며 프로젝트를 시작하겠습니다. 기본적으로 객체 지향 프로그래밍이 무엇인지 알고 있다는 전제 하에 작성하는 글입니다. 만약 모르시다면 구글 검색해서 공부하고 오세요! 저도 나중에 시간이 되면 객체 지향 프..
- Total
- Today
- Yesterday
- BFS
- 캐나다
- 캐나다생활
- 스위프트플레이그라운드
- 컴퓨터사이언스
- 컴퓨터
- c언어
- 해커랭크
- 하드웨어
- 문제풀이
- 영어공부
- 애플
- 다이나믹프로그래밍
- 너비우선탐색
- 기초
- 그리디
- hackerrank
- 아이패드
- dp
- 프로그래밍
- C언어기초
- DFS
- greedy
- 백준
- 프로그래머스
- c++
- 코딩공부
- 알고리즘
- 컴퓨터공부
- 깊이우선탐색
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |