해커랭크 알고리즘 문제 풀면서 처음으로 만난 Advanced 문제...! 휴 정말 이름만큼 쉽지 않았습니다 ㅠ 문제의 조건 1. 배열을 오름차순으로 삽입정렬할 때 완전히 완료될 때까지 원소들이 몇 칸 움직이는지 구하기 저도 처음에 shift의 뜻을 정확하게 몰라서 몇 번 움직이는지로 생각하고 풀려 했는데 당췌 풀리질 않아서 구글링을 해 본 결과... 원소가 원래 있던 칸에서 정렬되는 칸까지의 이동거리를 구하는 것이란 것을 알게 되었습니다. 비트 연산자의 쉬프트 연산자를 생각하면 되나 봅니다... 그러면 처음에 단순하게 생각할 땐 2중 for문으로 하는 삽입정렬을 시도해서 swap이 있을 때마다 shift count를 증가시키는 방법이 있습니다. 하지만 2중 for문은 느리기 때문에 (O(n^2)) 배열이..
이번 문제는 완전 이지이지~~~ 문제의 조건 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
이것 또한 쉬운 문제였는데 문제 조건 까먹고 중복제거하다가 조금 시간을 소비했던 문제입니다. Discussions에서 중복제거 하지말라는 말 보고 정신 차림 ㅎ; 문제의 조건 1. 배열의 원소들을 오름차순 정렬한다. 2. 큰 원소에서 작은 원소를 뺐을 때의 차 중 가장 작은 값을 가지는 짝꿍([i, i+n])을 구한다. 3. 주어지는 배열의 모든 원소는 unique하다. (유일한 값만 들어있음) 4. 하지만 결과값은 최소값이 나오는 모든 수의 짝꿍들이 포함되어야 하기 때문에 중복되는 값들이 나올 수 있다. 배열의 원소 내 두 수의 차 중 가장 작은 값이 나오는 짝꿍을 구하면 되니까 모든 수를 계산할 필요는 없습니다. 그리고 1번 조건으로 오름차순 정렬을 하고나면 숫자가 작은 순서부터 큰 순서대로 차례차례..
와 이 문제에서 반나절 헤메다가 방금 풀어서 혼자 알기 아까워서 쓰는 글입니다. 구글링을 해 봐도 c++로 푼 건 없다시피해서... 비교적 간단한 코드로 풀게 되어서 공유하고자 합니다. 문제의 조건 1. 제시된 2차원 벡터 [숫자, 알파벳] 형태로 저장된 값을 오름차순 정렬하는데 인덱스 번호는 지키면서 해야 함 2. 정렬하기 전 배열의 0번째부터 배열길이의 절반까지의 알파벳은 '-'(dash)로 바꿈 3. 즉 2번을 먼저 수행한 후 key 값이라 할 수 있는 숫자를 기준으로 인덱스 순서를 지키면서 오름차순 정렬을 한 후 숫자는 제외하고 알파벳과 -(dash)만 출력을 해야 함 근데 이게 처음에는 단순하게 for문 돌려서 2번을 먼저 수행한 후에 의 sort() 함수를 쓰려고 했었어요. 왜냐면 문제를 대충..
- Total
- Today
- Yesterday
- 프로그래머스
- 해커랭크
- 그리디
- 기초
- 너비우선탐색
- 아이패드
- greedy
- 컴퓨터사이언스
- 코딩공부
- 깊이우선탐색
- 백준
- DFS
- c언어
- c++
- 스위프트플레이그라운드
- 캐나다생활
- BFS
- 영어공부
- 문제풀이
- 알고리즘
- 프로그래밍
- 컴퓨터
- 애플
- 캐나다
- hackerrank
- C언어기초
- 다이나믹프로그래밍
- 컴퓨터공부
- dp
- 하드웨어
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |