Coding Test/programmers
-
[프로그래머스] 양궁대회 c++Coding Test/programmers 2022. 9. 26. 13:30
문제 설명 카카오배 양궁대회 결승전에 라이언과 어피치가 대결한다. 어피치가 먼저 화살을 모두 쏜 후, 라이언이 화살을 모두 쐈을 때, 라이언이 큰 점수 차이로 이기는 방법을 구하는 문제이다. (방법이 여러개라면, 가장 낮은 점수를 더 많이 맞히 경우가 정답이다.) 점수 계산법 - k점을 여러 발 맞혀도 k점 보다 많은 점수를 가져가는 게 아니고 k점만 가져감. 10점에 어피치가 3발, 라이언이 2발 쐈다면 어피치가 10점을 얻게 되고 라이언은 0점을 얻게된다. 라이언이 점수를 획득하기 위해서는 어피치보다 +1개를 쏴야 점수도 얻고 불필요한 화살 소모를 줄일 수 있다. 효율적으로 점수를 획득해야 한다. 불필요한 화살 소모는 다음과 같다. 1) K점 과녁에 a개 이하의 화살을 쏘는 경우 2) K점 과녁에 a..
-
[프로그래머스] 체육복 c++Coding Test/programmers 2022. 9. 13. 20:45
문제 설명 점심시간에 도둑이 들어, 일부 학생이 체육복을 도난당했습니다. 다행히 여벌 체육복이 있는 학생이 이들에게 체육복을 빌려주려 합니다. 학생들의 번호는 체격 순으로 매겨져 있어, 바로 앞번호의 학생이나 바로 뒷번호의 학생에게만 체육복을 빌려줄 수 있습니다. 예를 들어, 4번 학생은 3번 학생이나 5번 학생에게만 체육복을 빌려줄 수 있습니다. 체육복이 없으면 수업을 들을 수 없기 때문에 체육복을 적절히 빌려 최대한 많은 학생이 체육수업을 들어야 합니다. 전체 학생의 수 n, 체육복을 도난당한 학생들의 번호가 담긴 배열 lost, 여벌의 체육복을 가져온 학생들의 번호가 담긴 배열 reserve가 매개변수로 주어질 때, 체육수업을 들을 수 있는 학생의 최댓값을 return 하도록 solution 함수를..
-
[프로그래머스] 두 개 뽑아서 더하기 c++Coding Test/programmers 2022. 9. 13. 13:51
문제 설명 정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요. 제한 사항 numbers의 길이는 2 이상 100 이하입니다. numbers의 모든 수는 0 이상 100 이하입니다. 입출력 예 numbers result [2,1,3,4,1] [2,3,4,5,6,7] [5,0,2,7] [2,5,7,9,12] 풀이 순열을 사용한 조합 구하는 방법을 사용했습니다. nCr = numbers.size() C 2 조합을 구하기 위해서 보조 수열이 필요합니다. 1.보조 수열은 numbers사이즈 크기로 생성하고, 0으로 초기화 합니다. 2. 2개만 뽑아야 ..
-
[프로그래머스] 3진법 뒤집기 c++Coding Test/programmers 2022. 9. 13. 12:53
문제 설명 자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요. 제한 사항 n은 1 이상 100,000,000 이하인 자연수입니다. 입출력 예 n result 45 7 125 229 풀이 string을 사용한 풀이 방식입니다. #include #include #include using namespace std; int solution(int n) { int answer = 0; string strThird(""); while(n > 0){ int tmp = n % 3; n /= 3; strThird += to_string(tmp); } int len = strThird.size() - 1; ..
-
[프로그래머스] 약수의 개수와 덧셈 c++Coding Test/programmers 2022. 9. 13. 09:15
문제 설명 두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주세요. 제한 사항 1 ≤ left ≤ right ≤ 1,000 입출력 예 left right result 13 17 43 24 27 52 풀이 #include #include using namespace std; int solution(int left, int right) { int answer = 0; for(int i = left; i > 1; i b ? 0 : sign(a)*a + solution(a + 1, b); }
-
[프로그래머스] 문자열을 정수로 바꾸기 c++Coding Test/programmers 2022. 9. 12. 16:44
문제 설명 문자열 s를 숫자로 변환한 결과를 반환하는 함수, solution을 완성하세요. 제한 사항 s의 길이는 1 이상 5이하입니다. s의 맨앞에는 부호(+, -)가 올 수 있습니다. s는 부호와 숫자로만 이루어져있습니다. s는 "0"으로 시작하지 않습니다. 입출력 예 예를들어 str이 "1234"이면 1234를 반환하고, "-1234"이면 -1234를 반환하면 됩니다. str은 부호(+,-)와 숫자로만 구성되어 있고, 잘못된 값이 입력되는 경우는 없습니다. 풀이 stoi 함수는 음수도 처리가 가능합니다. #include #include using namespace std; int solution(string s) { int answer = 0; answer = stoi(s); return answe..
-
[프로그래머스] 하샤드 수 C++Coding Test/programmers 2022. 9. 12. 16:39
문제 설명 양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하샤드 수인지 아닌지 검사하는 함수, solution을 완성해주세요. 제한 사항 x는 1 이상, 10000 이하인 정수입니다. 입출력 예 arr return 10 true 12 true 11 false 13 false 풀이 #include #include using namespace std; bool solution(int x) { bool answer = true; int n = 0, nH = x; while(nH > 0){ n += nH % 10; nH /= 10; } answer = ..
-
[프로그래머스] 문자열 내 p와 y의 개수 c++Coding Test/programmers 2022. 9. 12. 16:31
문제 설명 대문자와 소문자가 섞여있는 문자열 s가 주어집니다. s에 'p'의 개수와 'y'의 개수를 비교해 같으면 True, 다르면 False를 return 하는 solution를 완성하세요. 'p', 'y' 모두 하나도 없는 경우는 항상 True를 리턴합니다. 단, 개수를 비교할 때 대문자와 소문자는 구별하지 않습니다. 예를 들어 s가 "pPoooyY"면 true를 return하고 "Pyy"라면 false를 return합니다. 제한 사항 문자열 s의 길이 : 50 이하의 자연수 문자열 s는 알파벳으로만 이루어져 있습니다. 입출력 예 s answer "pPoooyY" true "Pyy" false 풀이 #include #include #include using namespace std; bool solu..