숫자 배열이 주어지는데 숫자 키패드에서 어느쪽 엄지손가락을 써서 배열의 숫자들을 눌렀을까 알아맞히는 문제 문제의 조건 1. 엄지손가락만 사용한다. 2. 왼쪽 엄지손가락은 *에서 시작하고 오른쪽 엄지손가락은 #에서 시작한다. 3. 왼쪽 엄지손가락은 1, 4, 7을 누를 수 있고 오른쪽 엄지손가락은 3, 6, 9를 누를 수 있다. 4. 가운데 라인에 있는 숫자들은 현재 손가락이 있는 위치에서 더 가까운 위치에 있는 손가락이 누른다. -> 매번 숫자를 누를 때마다 손가락 위치를 저장해야 함 5. 거리 계산은 직선상으로만 하며 대각선으로는 하지 않음 -> 대각선 위치에 있으면 거리를 2라고 봄 6. 만약 양쪽 손가락 위치에서 눌러야 할 숫자까지 거리가 같으면 오른손잡이면 오른손으로 누르고 왼손잡이면 왼손으로 누..
해커랭크 알고리즘 문제 풀면서 처음으로 만난 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
- Total
- Today
- Yesterday
- greedy
- 다이나믹프로그래밍
- 알고리즘
- 문제풀이
- 아이패드
- 컴퓨터공부
- 코딩공부
- 깊이우선탐색
- 백준
- c++
- 너비우선탐색
- C언어기초
- 해커랭크
- 그리디
- 컴퓨터
- dp
- 기초
- hackerrank
- 컴퓨터사이언스
- 스위프트플레이그라운드
- BFS
- c언어
- DFS
- 프로그래머스
- 영어공부
- 애플
- 프로그래밍
- 하드웨어
- 캐나다생활
- 캐나다
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |