전체 글 111

[프로그래머스 LV2] - 조이스틱(그리디) c++

문제 https://school.programmers.co.kr/learn/courses/30/lessons/42860# 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 접근방법 각 알파벳의 최소 조작 횟수를 계산하는 것은 어렵지 않았다. 하지만, 좌우로 움직이는 횟수를 최소로 만드는 것이 어려웠다. 움직이는 순간마다. 좌우로 최소움직임 수를 계산하는 방법을 사용하니 해결 가능했다. 코드 #include #include #include #include using namespace std; // A에서 시작해서 target 알파벳을 완성하는 데 필요한 최소 ..

카테고리 없음 2024.02.21

[프로그래머스 LV2] - 모음사전(트리) c++

문제 https://school.programmers.co.kr/learn/courses/30/lessons/84512 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 접근방법 count를 전역변수로 설정하고, 방문횟수마다 +1을 해서 tree에 저장했다. 이렇게 하면, 각 노드의 자식 노드 개수를 구할 수 있다. 코드 #include #include #include #include using namespace std; vector dict = {'A', 'E', 'I', 'O', 'U'}; map tree; int count = 1; void make_t..

[프로그래머스 LV2] - 전력망을 둘로 나누기(트리) c++

문제 https://school.programmers.co.kr/learn/courses/30/lessons/86971 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 접근방법 input size가 100이다. 100!인 경우 절대 시간 내에 풀 수 없으므로, 전과는 다른 방법을 사용해야 했다. 송전탑의 개수를 세기 위해서 dfs를 써야하나, bfs를 써야하나 고민했는데, 문제에 설명되어있듯이 트리를 사용하면 쉽게 풀린다. f함수에서는 wires에서 하나를 삭제하고, 그에 해당하는 그래프를 find에 넘겨준다. find에서 연결되어있는 송전탑의 개수를 리턴..

[프로그래머스 LV2] - 피로도(트리) c++

문제 https://school.programmers.co.kr/learn/courses/30/lessons/87946 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 접근방법 백트래킹 재귀함수를 이용해서 풀었다. 코드 #include #include #include using namespace std; int back_tracking(int k, vector dungeons) { int answer = 100; int n = dungeons.size(); //던전을 도는 경우의 수 최대 8! bool check_leaf = true; if (!dungeo..

[프로그래머스 LV2] - 소수 찾기(완전탐색) c++

문제 https://school.programmers.co.kr/learn/courses/30/lessons/42839 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 접근방법 오래걸린 문제였다. 생각보다 어려워서 헤멨다. 푼 방법은 다음과 같다. 1. numbers 배열을 통해 나올 수 있는 가장 큰 숫자를 찾는다. (find_max) 2. 그 숫자까지 수 중 소수를 찾는다.(isprime) 3. 그 소수에 있는 숫자 하나하나 numbers에 있는 숫자에 모자라지 않고 포함되면 합격(check_possible) 코드 #include #include #in..

[프로그래머스 LV3] - 이중우선순위큐(priority queue) c++

문제 https://school.programmers.co.kr/learn/courses/30/lessons/42628 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 접근방법 sort함수의 시간 복잡도는 nlog(n)으로 알고 있다. 그러면 priority_queue만드는 거랑 넣을 때마다 sort()를 호출하는 거랑 시간복잡도는 비슷하다. sort를 사용해서 deque도 정렬할 수가 있었다.(정말 편리하다) 함수의 리턴타입이 vector였는데, return {0,0}; 이 가능했다. vector도 {}로 초기화할 수 있는 걸 알았다. 코드 #includ..

[프로그래머스 LV3] - 디스크 컨트롤러(minheap) c++

문제 https://school.programmers.co.kr/learn/courses/30/lessons/42627# 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 접근방법 jobs를 요청시간에 맞춰 정렬. 정렬된 jobs를 바탕으로, 하나씩 minheap에 넣을 건데, 이 때, time을 계산해야 한다. time이 jobs[idx][0]보다 작고 min_heap이 비어있는 경우, 이 때는 요청이 존재하지 않는 시간을 뜻한다. 그렇기 때문에, time = jobs[idx][0]으로 time 값을 변경해준다. 변경해주었다면, 이제 jobs[idx]를 m..

[프로그래머스 LV2] - 더 맵게(minheap) c++

문제 https://school.programmers.co.kr/learn/courses/30/lessons/42626 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 접근방법 기존 vector를 이용해 minheap을 만드는 방법을 배웠다. 기존 vector의 size()가 1인 경우를 고려하지 못해서 계속 실패했다. 코드 #include #include #include #include using namespace std; int solution(vector scoville, int K) { int answer = 0; // 스코빌 지수를 오름차순으로 정..

[프로그래머스 LV4] - 자동차 대여 기록 별 대여 금액 구하기(string, date) SQL(how to use 'with clause' )

문제 https://school.programmers.co.kr/learn/courses/30/lessons/151141 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 접근방법 세 테이블을 한 번에 join 시킨 후 해결하려고 했지만, 실패했다. 특히, 대여기간 별로 할인율을 다르게 적용하는 부분이 어려웠다. case문을 사용해야 할 거 같은데, 어디다가 위치시켜야 할 지 감이 오지 않았다. 그래서 다른 사람 답안을 참고했다. with를 써서 해결한 것을 볼 수 있었다. rental_date_per_history에서 각 기록별 rental_date를 가져..

[프로그래머스 LV3] - 조건에 맞는 사용자 정보 조회하기(string, date) SQL

문제 https://school.programmers.co.kr/learn/courses/30/lessons/164670 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 접근방법 concat과, left, right, substr, coalesce 등의 문자열 조작함수를 활용한다. 코드 -- 코드를 입력하세요 SELECT u.user_Id, u.nickname, concat(u.city,' ', u.street_address1,' ', coalesce(u.street_address2, '')) as 전체주소, concat( left(u.tlno, 3), '..