HackerRank(70)
-
[HackerRank/C++] Strong Password
루이즈는 특정 사이트에 가입하기 위해 비밀번호를 만든다 강력한 비밀번호의 조건은 다음과 같다 최소 6글자 이상의 비밀번호여야 하며, 영문 소문자, 대문자, 숫자, 특수문자를 하나씩 포함해야 한다 이때 인자로 받는 문자열 password가 강력한 비밀번호가 되려면 최소 몇개의 문자열이 추가되어야 하는지 return 한다 int minimumNumber(int n, string password) { bool num = false; bool sma = false; bool big = false; bool spc = false; string sWord = "!@#$%^&*()-+"; for (int i = 0; i < password.size(); ++i) { if (!num && '0'
2023.02.08 -
[HackerRank/C++] CamelCase
카멜 표기법은 첫번째 단어를 소문자로 쓰고, 다음 단어는 첫 글자를 대문자로 표기한다 이때 인자로 받는 s 문자열이 몇 단어로 이루어져 있는지 return 한다 int camelcase(string s) { int result = 1; for (const auto& i : s) if (65
2023.02.08 -
[HackerRank/C++] Super Reduced String
문자열 s를 인자로 받는다 만약 문자열 s는 아스키코드로 a~z의 값을 가지며 두개의 문자열이 서로 이어져 있다면 그 문자열을 지운다 이후 반복하며 남은 문자열을 출력하고, 문자열이 비어있다면 Empty String을 return 한다 string superReducedString(string s) { bool loop = true; while (loop) { loop = false; for (int i = 1; i < s.size(); ++i) { if (s[i] == s[i - 1]) { s.erase(i - 1, 2); loop = true; } } } return s.length() ? s : "Empty String"; } 루프를 위한 bool 값을 하나 주고, 한번 이상 문자열의 삭제가 일어났..
2023.02.08 -
[HackerRank/C++] Big Sorting
문자열로 이루어진 숫자 배열 unsorted를 받는다 해당 문자열의 배열을 오름차순으로 정렬해 return 한다 bool StirngSort(string a, string b) { if (a.length() b.length()) return false; else { for (int i = 0; i b[i]) return false; } } return false; } vector bigSorting(vector unsorted) { sort(unsorted.begin(), unsorted.end(),..
2023.02.08 -
[HackerRank/C++] Strange Counter
첫번째 시간블럭은 3의 값을 가지고 있으며 이후 갱신될 때마다 자신의 값의 2배로 커진다 시간블럭이 갱신되면 카운트다운 value 값은 시간블럭의 크기만큼에서 1씩 점점 감소한다 t의 값이 주어질때 value의 값을 return 한다 long strangeCounter(long t) { long nowBlock = 0; long prevBlock = 0; long totalPrevBlock = 0; long count = 0; while (nowBlock < t - totalPrevBlock) { prevBlock = nowBlock; totalPrevBlock += prevBlock; nowBlock = 3 * (long)pow(2, count); ++count; } return nowBlock - (..
2023.02.08 -
[HackerRank/C++] Happy Ladybugs
문자열 b를 받으며 A~Z의 아스키 코드값과 _를 값으로 가지고 있다 A~Z는 Ladybugs이며 _는 빈 공간으로 Ladybugs가 이동할 수 있는 공간이다 Ladybugs는 양 옆에 같은 종류의 Laybugs가 있으면 Happy하다고 한다 해당 배열에서 빈공간으로 움직이며 모든 Ladybug가 Happy할 수 있다면 YES, 불가능하다면 NO를 return한다 string happyLadybugs(string b) { bool under = false; for (const auto& i : b) if (i == '_') under = true; if (!under) { for (int i = 0; i = 0) if (b[i] == b[i - 1])..
2023.02.08 -
[HackerRank/C++] Manasa and Stones
숫자 a, b가 각각 적힌 두개의 돌이 있다 n번만큼 a,b 값 둘중 하나만큼 이동했을때, 해당 위치에는 보물이 숨겨져 있다고 한다 보물이 숨겨져 있을 가능성이 있는 모든 위치를 오름차순으로 정렬해 return 한다 vector stones(int n, int a, int b) { vector result; result.reserve(n); if (a == b) { result.push_back(a * (n - 1)); return result; } else if (a > b) { int temp = a; a = b; b = temp; } for (int i = 0; i < n; ++i) { result.push_back(a * (n - i - 1) + b * i); } return result; } 모..
2023.02.08 -
[HackerRank/C++] Cavity Map
string을 담는 vector grid를 인자로 받으며 각 문자열은 grid에서 깊이를 나타낸다 특정 인덱스가 상, 하, 좌, 우의 값보다 작다면 구덩이로 판정해서 해당 인덱스의 값을 X로 변경하고 return 한다 vector cavityMap(vector grid) { for (int y = 1; y grid[y + 1][x] && grid[y][x] > grid[y - 1][x] && grid[y][x] > grid[y][x + 1] && grid[y][x] > grid[y][x - 1]) grid[y][x] = 'X'; } } retur..
2023.02.08