본문 바로가기

반응형

Programming/Algorithm

(6)
[Codewars] Double Cola 문제 풀이 C# 코딩테스트 개인적으로 좋아하는 미드 빅뱅이론 주인공들이 나온 문제 문제 더보기 Sheldon, Leonard, Penny, Rajesh and Howard are in the queue for a "Double Cola" drink vending machine; there are no other people in the queue. The first one in the queue (Sheldon) buys a can, drinks it and doubles! The resulting two Sheldons go to the end of the queue. Then the next in the queue (Leonard) buys a can, drinks it and gets to the end of the queu..
[Codewars] Moving Zeros To The End 문제 풀이 C# 코딩테스트 문제 Write an algorithm that takes an array and moves all of the zeros to the end, preserving the order of the other elements. ex) Kata.MoveZeroes(new int[] {1, 2, 0, 1, 0, 1, 0, 3, 0, 1}) => new int[] {1, 2, 1, 1, 3, 1, 0, 0, 0, 0} 풀이 public static int[] MoveZeroes(int[] arr) { return arr.OrderBy(x => x == 0).ToArray(); } 문제 링크 : https://www.codewars.com/kata/52597aa56021e91c93000cb0
코딩테스트 사이트 알고리즘 플랫폼 추천 프로그래머스 : https://programmers.co.kr/ 후보 : 백준, 코드워즈, 코딜리티, 프로그래머스, 해커랭크 고려 요소 기업에서 코딩 테스트시 많이 쓰는지 풀 문제가 충분히 있는지 난이도 별 분리가 잘 되어있는지 기업 코딩테스트 응시 시 실제로 이용했던 플랫폼 1. 프로그래머스(44%) 2. 해커랭크(33%) 3. 코딜리티(22%)
[프로그래머스] 배달 문제 풀이 C# 코딩테스트 문제 링크 : programmers.co.kr/learn/courses/30/lessons/12978 문제 이해 후 DFS를 생각하고 구현 public int solution(int N, int[,] road, int K) { var visitedVillages = new Dictionary(); dfs(road, 1, visitedVillages, K); return visitedVillages.Count(); } 방문 기록용 Dictionary 생성. 를 기록한다. 처음엔 만 type으로 기록하려 했지만 특정 마을(V)을 한번 방문했다는 이유로 검사하지 않으면 이후에 나오는 더 짧은 거리로 인해 V를 통해 갈 수 있는 마을들을 체크하지 못할 수 있으므로 남은 거리를 기록하도록 수정했다. private..
SJF scheduling 최단 작업 우선 스케줄링 의미 : SJF(Shortest Job First) - 작업시간이 가장 작은 작업부터 처리하는 스케줄링 기법. 시작 : 기본 스케줄링 기법인 FCFS(First Come First Served)의 단점(대기시간이 길어질 수도 있음)을 보완한 스케줄링 기법. 특징 : 작업시간이 작은 작업을 우선적으로 처리하므로 자연스럽게 뒤에 남아있는 작업들의 대기시간이 줄어든다. 동시에 작업시간이 긴 작업들은 처리되지 못하는 기아상태(starvation)가 발생할 수 있다. 실제환경에선 적용이 어렵다는 특징이 있다. (처리해야 할 작업들의 작업시간을 모두 알고 있다는 가정하에 가능한 스케줄링인데 실제론 요청이 들어오기 전까진 작업시간을 알 수가 없으므로) 선점/비선점 방식 모두 구현 가능하다. 선점방식으로 구현한 SJF..
C# LINQ Count와 loop 속도 비교 평소 LINQ를 애용하는 편이다. 직관적이고 담당하는 실무에서 탐색이나 정렬의 속도는 크게 중요하지 않기 때문이다. 최근 알고리즘 문제풀이를 하면서 로직의 일부에 자연수를 이진수로 바꾼 뒤 1의 개수를 세야 할 일이 있었다. 더보기 292 -> "100100100" -> 3개 83 -> "1010011" -> 4개 Count 함수를 이용해 아래와 같이 작성 후 테스트를 돌렸는데 절반 정도가 효율성 테스트에서 실패했다. return Convert.ToString(num, 2).Count(d => d == '1'); 다른 곳은 수정할만한 곳이 안 보여 loop문을 사용하도록 수정 후 테스트했더니 모두 통과했다. var count = 0; var binary = Convert.ToString(num, 2); ..

반응형