알고리즘 공부/프로그래머스 [C++]27 프로그래머스 : 멀리뛰기 [C++] 2022. 10. 28. 프로그래머스 : 구명보트 [C++] 문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/42885 문제 설명 1. 무인도에 갇힌 사람들을 구명보트를 이용하여 구출하려고 합니다. 2. 구명보트는 작아서 한 번에 최대 2명씩 밖에 탈 수 없고, 무게 제한도 있습니다. 3. 구명보트를 최대한 적게 사용하여 모든 사람을 구출하려고 합니다. 문제 입출력 예) people limit return [70, 50, 80, 50] 100 3 [70, 80, 50] 100 3 문제 풀이 우선적으로, people에 있는 데이터를 오름차순 정렬 하도록한다. people의 배열의 첫번째 값 + 배열의 마지막 값이 limit보다 작거나 같으면 구명보트에 태울 수 있는 무게에서 가장 이상적인 무게가 된다.. 2022. 10. 28. 프로그래머스 : 짝지어 제거하기 [C++] 문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/12973 문제 설명 1. 알파벳 소문자로 이루어진 문자열이 매개변수로 주어진다. 2. 문자열에서 같은 알파벳이 2개가 붙어 있는 짝을 찾습니다. 3. 같은 알파벳 둘을 제거한 뒤, 앞뒤로 문자열을 이어 붙입니다 4. 이 과정을 반복해서 문자열을 모두 제거한다면 짝지어 제거하기 종료 5. 문자열 S가 주어졌을 때, 짝지어 제거하기를 성공적으로 수행할 수 있는지 리턴값 반환하기. 6. 성공적으로 수행은 1리턴, 아닐 경우 0 리턴 문제 입출력 예) s result baabaa 1 cdcd 0 문제 풀이1 반복문을 사용해서, 앞과 뒤의 값이 같은지 확인하면 된다. for 문을 활용하여 배열[i].. 2022. 10. 27. 프로그래머스 : 다음 큰 숫자 [C++] 문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/12911 문제 설명 자연수 n이 매개변수로 주어질 때, n의 다음 큰 숫자를 return 하는 solution 함수를 완성해주세요. 문제 입출력 예) n return 78 83 15 23 문제 풀이1 2진법으로 변환 후 1의 개수를 파악한다. n값을 1씩 증가시켜, 초기값 n과 동일한 1의 개수를 가진 숫자를 구한다. 2진법으로 변환 후 1의 개수를 파악하는 함수 작성 n값을 1씩 증가시킨다. #include #include #include #include using namespace std; int two(int n){ int chCount = 0; while(n!=0){ if(n%2 =.. 2022. 10. 27. 프로그래머스 : 숫자의 표현 [C++] 문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/12924 문제 설명 자연수 n이 매개변수로 주어질 때, 연속된 자연수들로 n을 표현하는 방법의 수를 return하는 solution를 완성해주세요. 문제 입출력 예) n result 15 4 문제 풀이 연속된 자리수를 생각했기에, for문을 활용하였다. 이중 for문을 이용하여, 연속된 자리 수를 더해준다. 만약 n값보다 큰 값이 되면 break n값과 같은 같이면 answer ++를 해준다. #include #include #include using namespace std; int solution(int n) { int answer = 0; for(int i=0; i 2022. 10. 27. 프로그래머스 : 피보나치 수 [C++] 문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/12945 문제 설명 피보나치 수는 F(0) = 0, F(1) = 1일 때, 1 이상의 n에 대하여 F(n) = F(n-1) + F(n-2) 가 적용되는 수 입니다. 2 이상의 n이 입력되었을 때, n번째 피보나치 수를 1234567으로 나눈 나머지를 리턴하는 함수, solution을 완성해 주세요. 문제 입출력 예) n return 3 2 5 5 문제 풀이1 피보나치 수열 함수를 만들어서, 실행해 주도록 한다. 피보나치 수열 함수 작성 나머지연산자 이용 #include #include #include using namespace std; int fibo(int n){ if(n == 0) r.. 2022. 10. 27. 프로그래머스 : 올바른 괄호 [C++] 문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/12909 문제 설명 괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 문자열 s가 주어졌을 때, 문자열 s가 올바른 괄호이면 true를 return 하고, 올바르지 않은 괄호이면 false를 return 하는 solution 함수를 완성해 주세요. 문제 입출력 예) s answer "()()" true "(())()" true ")()(" false "(()(" false 문제 풀이 push, pop 으로 풀 수 있지만, 다른 방법으로 풀이하였다. count 로 "("괄호가 삽입 시 +1 , ")"괄호가 삽입 시 -1를 해준다. .. 2022. 10. 27. 프로그래머스 : 중간 리뷰 (4일차) [C++] 학습 리뷰 C++ 코딩연습한지 4일차가 되었다. 참 어렵다. stringstream 4일차 학습 내용 1) 문자열을 나누는 stringstream stringstream 2022. 10. 27. 프로그래머스 : 최솟값 만들기 [C++] 문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/12941 문제 설명 배열 A, B에서 각각 한 개의 숫자를 뽑아 두 수를 곱합니다. 이러한 과정을 배열의 길이만큼 반복하며, 두 수를 곱한 값을 누적하여 더합니다. 이때 최종적으로 누적된 값이 최소가 되도록 만드는 것이 목표입니다. 문제 입출력 예) A B answer [1, 4, 2] [5, 4, 4] 29 [1, 2] [3, 4] 10 문제 풀이 모든 A배열 최소값 * B배열 최대값의 합이 누적값의 최소이다. A배열을 정렬해준다 B배열을 정렬해준다 정렬된 A배열(최소값) * B배열(최대값) 을 실행한다. #include #include #include using namespace std.. 2022. 10. 27. 이전 1 2 3 다음