목록PS (34)
배움 저장소
programmers.co.kr/learn/courses/30/lessons/42884 코딩테스트 연습 - 단속카메라 [[-20,15], [-14,-5], [-18,-13], [-5,-3]] 2 programmers.co.kr 간단하게 문제를 풀 수 있는 아이디어는 자동차를 빨리 진입한 순서대로 정렬하는데서 부터 시작한다. 그 후 첫 자동차와 두 번째 자동차가 공유하고 있는 도로를 업데이트하는 것이 문제풀이의 핵심이다. int solution(vector routes) { sort(routes.begin(), routes.end()); int answer = 1; // 공유하고 있는 도로의 시작 지점 int common_begin = routes[0][0]; // 공유하고 있는 도로의 끝 지점 int c..
programmers.co.kr/learn/courses/30/lessons/42885# 코딩테스트 연습 - 구명보트 무인도에 갇힌 사람들을 구명보트를 이용하여 구출하려고 합니다. 구명보트는 작아서 한 번에 최대 2명씩 밖에 탈 수 없고, 무게 제한도 있습니다. 예를 들어, 사람들의 몸무게가 [70kg, 50kg, 80kg, 5 programmers.co.kr 구명보트는 작아서 한 번에 최대 2명씩 밖에 탈 수 없고, 무게 제한도 있습니다. 문제 조건을 제대로 읽지 않아 삽질 한 문제. vector을 따로 만들어 사용 여부를 체크하다가 포기하고 3명이상 탈 경우를 고려해서 , 힙을 이용하여 풀었다. 문제만 제대로 읽었으면 Leetcode에서 유명한 twoSum 문제와 풀이방법이 같았음을 알 수 있었는데 ..
programmers.co.kr/learn/courses/30/lessons/42860 코딩테스트 연습 - 조이스틱 조이스틱으로 알파벳 이름을 완성하세요. 맨 처음엔 A로만 이루어져 있습니다. ex) 완성해야 하는 이름이 세 글자면 AAA, 네 글자면 AAAA 조이스틱을 각 방향으로 움직이면 아래와 같습니다. ▲ - 다 programmers.co.kr 레벨 2라고 되어있지만 체감은 훨씬 어려웠던 문제. 문자를 조이스틱의 최소한의 움직임으로 출력하라는 문제를 읽고 막막했다. 조이스틱이 움직이는 걸 일일이 세는 것도 생각해야 하는데, 최소한의 움직임까지 고려하라니. 일단 간단한 사례를 직접 실행해보고 문제를 풀려고 하는 편이라 머리가 아팠다. 갓글 검색 덕분에 아이디어를 얻었다. 그 중에 A에서 출발할지 Z..
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..