분류 전체보기
프로그래머스 - 구명보트
programmers.co.kr/learn/courses/30/lessons/42885# 코딩테스트 연습 - 구명보트 무인도에 갇힌 사람들을 구명보트를 이용하여 구출하려고 합니다. 구명보트는 작아서 한 번에 최대 2명씩 밖에 탈 수 없고, 무게 제한도 있습니다. 예를 들어, 사람들의 몸무게가 [70kg, 50kg, 80kg, 5 programmers.co.kr 처음에 풀때는 단순히 오름차순 정렬해서 앞뒤로 두개씩 비교해서 limit 를 넘는지 아닌지로 판별하려 했으나 입력 : [10, 20, 30, 40, 50, 60, 70, 80, 90], 100 에서 결과 : 5 가 나와야 했으나, 앞뒤로 두개씩 비교하다 보니, 7이 나왔다. 그래서 이런 방식 대신 투포인터 기법을 사용해야한다. (입력의 최대 크기가..
프로그래머스 - H-Index
programmers.co.kr/learn/courses/30/lessons/42747# 코딩테스트 연습 - H-Index H-Index는 과학자의 생산성과 영향력을 나타내는 지표입니다. 어느 과학자의 H-Index를 나타내는 값인 h를 구하려고 합니다. 위키백과1에 따르면, H-Index는 다음과 같이 구합니다. 어떤 과학자가 발표 programmers.co.kr citations 의 최대 길이가 1,000 이므로, O(N^2) 이 가능하다. 먼저 인용횟수와 비교할 수 있도록 sort() 함수로, 오름차순 정렬해준다. 문제에서 제시한 h 가 아래 코드에선 변수 i 와 같다. i 보다 크거나 같은 citations[j] 값이 있으면 cnt++ 하여 카운팅 횟수를 늘린다 (변수 cnt 는 h 번 이상 인용..
프로그래머스 - 가장 큰 수
programmers.co.kr/learn/courses/30/lessons/42746# 코딩테스트 연습 - 가장 큰 수 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 programmers.co.kr 처음에 next_permutation 으로 브루트포스 방식으로 전체를 돌려서 할려 했으나 시간 초과가 나서 통과가 불가능했다. c++ 에서 제공하는 string 은 비교 연산자를 자체적으로 가지고 있는데, "123" 과 "1234" 를 비교하면, "1234" 가 더 큰 값으로 처리된다. 또한 이 문제에서 요구하..
프로그래머스 - 이중 우선순위 큐
programmers.co.kr/learn/courses/30/lessons/42628# 코딩테스트 연습 - 이중우선순위큐 programmers.co.kr 최소 최대를 지울 수 있는 이중 우선순위 큐를 만드는 문제로 최소힙, 최대힙 두개를 만들어서 처리하거나, multiset 을 이용하여 처리할 수 있다. (multiset 을 사용한 이유는 1. 앞뒤 양방향에서 접근 할 수 있어야하며, 2. 삽입, 삭제와 동시에 정렬되어야 하기 때문이다. 이런 자료구조를 갖는 것은 red-black tree 기반의 multiset STL 을 사용해야 처리된다) - c++ #include using namespace std; vector solution(vector operations) { vector answer; mu..
프로그래머스 - 더 맵게
programmers.co.kr/learn/courses/30/lessons/42626 코딩테스트 연습 - 더 맵게 매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같 programmers.co.kr STL 의 우선순위큐를 최소힙으로 만들면 풀리는 문제다 - c++ #include using namespace std; int solution(vector scoville, int K) { int answer = 0; priority_queue pq; for (int i = 0; i = K) break; if (pq.size()
SWEA 2819 - 격자판의 숫자 이어 붙이기
swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV7I5fgqEogDFAXB&categoryId=AV7I5fgqEogDFAXB&categoryType=CODE SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com - c++ #include #include #define endl "\n" using namespace std; int cnt, T; int result[10000000]; int adj[4][4]; void dfs(int y, int x, int num, int depth) { if (depth == 7) { result[num]..
SWEA 1206 - View
swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV134DPqAA8CFAYh&categoryId=AV134DPqAA8CFAYh&categoryType=CODE&&& SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com - c++ #include #include #define endl "\n" using namespace std; int cnt, n; int arr[1001]; int main(int argc, char** argv) { cin.tie(0); ios_base::sync_with_stdio(0); int test_case; fo..
프로그래머스 - 조이스틱
programmers.co.kr/learn/courses/30/lessons/42860# 코딩테스트 연습 - 조이스틱 조이스틱으로 알파벳 이름을 완성하세요. 맨 처음엔 A로만 이루어져 있습니다. ex) 완성해야 하는 이름이 세 글자면 AAA, 네 글자면 AAAA 조이스틱을 각 방향으로 움직이면 아래와 같습니다. ▲ - 다 programmers.co.kr 1. 입력 글자 길이 n 만큼의 크기의 문자열을 전부 'A' 가 들어가게 생성한다 2. 입력 글자와 'A' 로 만 구성된 글자가 같을 때 까지 다음의 반복문을 돌린다 - 1) 문자 변경 : 문자 변경시에 이동 횟수를 최소화 해야하므로 현재 알파벳 - 'A' 의 거리(up_len, 조이스틱 윗쪽 방향), 'Z' + 1 - 현재 알파벳 의 거리 (down_l..