공부
-
[코딩테스트] HackerRank - New Year Chaos공부/코딩테스트 2024. 10. 25. 10:42
사람들이 1번부터 순서대로 번호표를 받고 줄을 서 있습니다.그리고 그줄에서 바로 앞에 사람에게 뇌물을 주고 자리를 바꿀 수 있습니다. 하지만 번호표는 그대로입니다.뇌물을 주고 3번 이상 바꾼 사람이 있으면 Too chaotic 를 표시하고아니라면 뇌물을 준 횟수를 합해서 표시해주세요. 예시입력 : q = [1,2,3,5,4,6,7,8]5번 사람 4번에게 1번 뇌물을 제공함출력 : 1 입력 : q = [4,1,2,3]4번 사람이 총 3번의 뇌물을 제공함출력 : Too chaotic 해결방법void minimumBribes(vector q){ for (int i = 0; i i + 1 + 2) { cout i + 1) { for (int j = i + 1; j
-
[코딩테스트] HackerRank - Recursive Digit Sum공부/코딩테스트 2024. 10. 24. 23:39
숫자 문자열n 을 k 만큼 반복해서 들고 있는 문자를 하나씩 더해서 합쳐진 값을 또 더한다 숫자가 하나 나올때까지 반복한다예시입력 : n = "9875", k = 4출력 : 8 첫 계산은 반복되는 숫자이기에 하나만 처리하고 k를 곱하면 동일한 숫자가 됨해결방법int superDigit(string n, int k){ long num = 0; if (n.size() == 1) { return n[0] - '0'; } for (char ch : n) { num += ch - '0'; } num *= k; return superDigit(to_string(num), 1);}
-
[코딩테스트] HackerRank - Grid Challenge공부/코딩테스트 2024. 10. 24. 22:59
정사각형 문자 그리드가 주어지면 각 행의 요소 알파벳 순으로 재배열하고 열도 아래로 알파벳 순서인지 확인하세요.예시입력 : grid = {"abc", "ade", "efg"}a b ca d ee f g정렬하면 위에처럼 되고 열 또한 정렬이 되어 있기에 YES 를 반환string gridChallenge(vector grid){ for (size_t i = 0; i grid[j+1][i]) { return "NO"; } } } return "YES";}
-
[코딩테스트] HackerRank - Tower Breakers공부/코딩테스트 2024. 10. 24. 17:24
m높이의 n개의 타워가 있습니다.두명의 플레이어중에 1번 플레이어가 항상 처음으로 시작합니다.번갈아가며 하나의 타워의 2높이 이상의 타워를 제거할 수 있습니다.타워의 높이가 1 이하가 되면 더이상 건드릴 수 없습니다.본인 차례가 왔을 때 아무것도 건드릴수 없으면 패배합니다.1번이 이기면 1을 반환하고 아니면 2를 반환 합니다.모든 플레이어는 최적의 선택을 합니다. 예시 입력 : n = 2, m = 3출력 : 2 2 해결방법1. 높이가 1개 이하면 1번 플레이어는 아무것도 못하고 바로 패배2. 타워의 갯수가 짝수이면 1번 플레이어는 무조건 패배 int towerBreakers(int n, int m) { if(m
-
[코딩테스트] HackerRank - Zig Zag Sequence공부/코딩테스트 2024. 10. 24. 16:58
주어진 정수 행렬을 지그재그로 표현하라 예시입력 : a = [1,2,3,4,5,6,7]출력 : 1 2 3 7 6 5 4 해결 방법#include #include #include using namespace std;void findZigZagSequence(vector a, int n){ sort(a.begin(), a.end()); int mid = n / 2; //(n + 1)/2; swap(a[mid], a[n - 1]); int st = mid + 1; int ed = n - 2; //n - 1; while (st 0) cout a = { 1,2,3,4,5,6,7 }; findZigZagSequence(a, 7);}
-
[코딩테스트] HackerRank - Flipping the Matrix공부/코딩테스트 2024. 10. 24. 00:52
2nx2n 정수 행렬 게임 2nx2n 행렬이 주어졌을 때, 행 또는 열을 뒤집어 좌측상단 위치하는(nxn) 행렬의 합의 최댓값 구하기 예시41,67,34,0,69,24,78,58,62,64,5,45,81,27,61,91,matrix[0][0] : 41 / matrix[0][3] : 0 / matrix[3][0] : 81 / matrix[3][3] : 91 /matrix[0][1] : 67 / matrix[0][2] : 34 / matrix[3][1] : 27 / matrix[3][2] : 61 /matrix[1][0] : 69 / matrix[1][3] : 58 / matrix[2][0] : 62 / matrix[2][3] : 45 /matrix[1][1] : 24 / matrix[1][2] : 78 /..
-
[코딩테스트] HackerRank - Find the Median공부/코딩테스트 2024. 10. 24. 00:20
주어진 숫자 배열을 정렬하고 중간 값을 찾습니다.예시입력 배열: arr = [5,3,1,2,4]정렬된 배열: arr = [1,2,3,4,5] 중간값은 3 입니다배열 크기 n은 홀수 입니다해결 방법★ 퀵 셀렉트 알고리즘이 중요한 방법#include #include #include using namespace std;// 배열을 분할하여 k번째 작은 값을 찾는 함수int partition(vector& arr, int low, int high) { int pivot = arr[high]; // 피벗은 배열의 마지막 값 int i = low; for (int j = low; j & arr, int low, int high, int k) { if (low == high) { r..