목록전체 글 (103)
배움 저장소
programmers.co.kr/learn/courses/30/lessons/42883 코딩테스트 연습 - 큰 수 만들기 programmers.co.kr index를 활용하여 문제를 풀려면 최종 결과물의 length를 계산해서 code를 짜야하는데 어떻게 할 지 엄두가 나지 않았다. 다른 분이 짠 코드를 보고, 생각난 아이디어를 밀어붙여서 어떻게든 완성시켜야 한다는 걸 알게 되었다. 풀이1. Index를 이용한 풀이 string solution(string number, int k) { string answer; int begin = 0; int cvrted_size = number.size() - k; for(int i=0; i= i-k 로 정리해서 사용해도 된다. 풀이3. 실패한 첫 풀이 string..
programmers.co.kr/learn/courses/30/lessons/42862 코딩테스트 연습 - 체육복 점심시간에 도둑이 들어, 일부 학생이 체육복을 도난당했습니다. 다행히 여벌 체육복이 있는 학생이 이들에게 체육복을 빌려주려 합니다. 학생들의 번호는 체격 순으로 매겨져 있어, 바로 앞번 programmers.co.kr 처음엔 map으로 문제를 풀었다. 백터로 할 수도 있겠다 싶었음. 백터가 가지고 있는 값을 흔히 i로 가리킨다. 이 i로 학생을 가리키고 있어서 백터로 풀 수 있는 것 같다. 학생을 고유 이름을 나타냈다면 백터로 풀기 힘들었을까? 그럼 문제의 조건이 완전히 바뀌긴 한다. map을 사용하는 문제는 백터 2개를 사용하면 풀수 있지만 번거롭다. 문제를 제대로 읽지 않아서 reserv..
programmers.co.kr/learn/courses/30/lessons/42628 코딩테스트 연습 - 이중우선순위큐 programmers.co.kr priority queue 2개로 풀어도 되지만 make_heap을 사용하면 하나로 풀 수 있다. 비교 연산자 역할을 하는 smaller와 bigger는 lambda로 대신해도 된다. 다만 자주 사용하기 때문에 비효율적이다. extractMax 와 extractMin을 함수를 둘 다 만들지 않고 함수 포인터를 parameter로 넘겨 코드 수를 줄일 수 있었다. bool smaller(int a, int b){ return a>b; } bool bigger(int a, int b){ return a
programmers.co.kr/learn/courses/30/lessons/42627 코딩테스트 연습 - 디스크 컨트롤러 하드디스크는 한 번에 하나의 작업만 수행할 수 있습니다. 디스크 컨트롤러를 구현하는 방법은 여러 가지가 있습니다. 가장 일반적인 방법은 요청이 들어온 순서대로 처리하는 것입니다. 예를 programmers.co.kr 디스크 작업이 진행되는 도중에 더 높은 우선순위를 가진 작업 명령이 입력되면 진행중이던 작업을 그만 두고 새로운 작업명령을 실행해야 하는가?라는 질문에 바로 답을 할 수 없어서 애먹었다. 문제의 조건에서 "하드디스크가 작업을 수행하고 있지 않을 때에는 먼저 요청이 들어온 작업부터 처리합니다."를 보고 힌트를 얻었다. 작업을 진행하는 도중에는 우선순위가 높더라도 무시하겠지..
programmers.co.kr/learn/courses/30/lessons/42626 코딩테스트 연습 - 더 맵게 매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같 programmers.co.kr loop마다 매번 정렬을 하면 nlogn시간을 소모한다. 효율성 시험을 통과하기 위하여 priority_queue나 heap을 사용해주면 된다. heap을 사용하면 매번 begin~end까지 모든 요소를 입력하기 떄문에 귀찮다. priority_queue를 훨씬 간단하게 쓸 수 있다. bool compare(int a, int b){ return a>b; } in..
programmers.co.kr/learn/courses/30/lessons/42586 코딩테스트 연습 - 기능개발 프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 programmers.co.kr 문제를 봤을 때 Queue, Stack, For & While 중 어느 자료 구조를 활용해야 할 지 감을 잡아야 문제를 빨리 풀 수 있을 것 같은데 별로 감이 안온다. 그냥 PseudoCode 쓰면서 결정하는 편인데, 문제만 읽고 자료 구조를 선택할 수 있는 수준이 되고 싶다. 풀이 1. (진행상황 + 진행속도 * 일자)를 계산하여 100이 넘었을 때 답 넘기기 vec..
programmers.co.kr/learn/courses/30/lessons/42583 코딩테스트 연습 - 다리를 지나는 트럭 트럭 여러 대가 강을 가로지르는 일 차선 다리를 정해진 순으로 건너려 합니다. 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는지 알아내야 합니다. 트럭은 1초에 1만큼 움직이며, 다리 길이 programmers.co.kr 자료구조 공부할 때 배웠던 circular queue가 생각나 직접 구현하고 싶었다. 사이즈가 꽉 차면 자동적으로 처음 들어온 자료를 지우는 형태로 enqueue를 구현하였다. 코드를 짤 때 이미 들어가있는 자료를 지우면 weight를 초과하는지 아닌지를 체크하지 않아 고생했다. 질문하기 탭에서 Edge케이스를 해결할 수 있는 예제를 실행해보고서 위와 같은 문..