본문 바로가기

알고리즘70

[C++] 다음에 올 숫자 다음에 올 숫자 등차수열 혹은 등비수열 common이 매개변수로 주어질 때, 마지막 원소 다음으로 올 숫자를 return 하도록 solution 함수를 완성해보세요. 원소의 값이 음수가 될 수 있기 때문에, 등차수열인 경우와 등비수열인 경우에 예외조건인 경우를 고려하였습니다. 1. 배열이 등차수열인 경우 2. 등비수열일 경우에 2-1. 공비가 양수인 경우 2-2. 공비가 음수인 경우 3. 원소가 모두 0인 경우 이렇게 조건을 나누어 원소 3개를 비교하였습니다. #include #include using namespace std; int solution(vector common) { int answer = 0; if (common[1] - common[0] != common[2] - common[1]){ .. 2023. 5. 23.
[C++] 숫자 문자열과 영단어 2021 카카오 채용연계형 인턴십 코딩테스트 1번 숫자 문자열과 영단어 네오와 프로도가 숫자놀이를 하고 있습니다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다. 다음은 숫자의 일부 자릿수를 영단어로 바꾸는 예시입니다. 1478 → "one4seveneight" 234567 → "23four5six7" 10203 → "1zerotwozero3" 입력받은 문자열 s와 출력 답 "one4seveneight" 1478 "23four5six7" 234567 "2three45sixseven" 234567 "123" 123 이 문제는 입력받은 문자열s 에서 zero~nine 에 해당하는 문자를 숫자로 바꾸어 출력하는 문제입니다. 영어 문자열을 찾.. 2023. 5. 23.
[C++] 유한소수 판별하기 유한소수 판별하기 두 정수 a와 b가 매개변수로 주어질 때, a/b가 유한소수이면 1을, 무한소수라면 2를 return하도록 solution 함수를 완성해주세요. 분자와 분모의 최대공약수로 분모를 나눈 뒤, 그 분모가 2, 5 가 아닌 소수로 나눠지면 무한소수, 아니라면 유한소수입니다. #include #include #include using namespace std; // 소수 구하기 O(log n) bool isPrime2(int n) { for (int i = 2; i 2023. 5. 22.
[C++] 문자열 밀기 문자열 밀기 문자열 A와 B가 매개변수로 주어질 때, A를 밀어서 B가 될 수 있다면 밀어야 하는 최소 횟수를 return하고 밀어서 B가 될 수 없으면 -1을 return 예를 들어 A가 "hello" B가 "ohell" 이면 hello를 우측으로 1번 민다고 생각하면 됩니다. A를 한칸씩 우측으로 밀어보면서 B와 비교하여 풀었는데, 다른사람의 풀이를 보고 감탄을 하여 바로 가져왔습니다. 나의 풀이 #include #include #include using namespace std; int solution(string A, string B) { int answer = 0, b = A.size(); string a = ""; if(A == B) return 0; else{ for(int i = 0; i .. 2023. 5. 22.
[C++] (공백분리) 컨트롤 제트 컨트롤 제트 숫자와 "Z"가 공백으로 구분되어 담긴 문자열이 주어집니다. 문자열에 있는 숫자를 차례대로 더하려고 합니다. 이 때 "Z"가 나오면 바로 전에 더했던 숫자를 뺀다는 뜻입니다. 숫자와 "Z"로 이루어진 문자열 s가 주어질 때 답을 return #include #include #include using namespace std; int solution(string s) { int answer = 0; int tmp; stringstream ss(s); vector words; string word; while (getline(ss, word, ' ')) { words.push_back(word); } for (int i = 0; i < words.size(); i++) { if (words[i].. 2023. 5. 19.
[C++] 소인수분해, 7의 개수 소인수분해 자연수 n이 매개변수로 주어질 때 n의 소인수를 오름차순으로 담은 배열을 return하도록 solution 함수를 완성해주세요. #include #include #include using namespace std; // n이 소수인지 판별 bool isPrime(int n) { if (n < 2) return false; for (int i = 2; i * i 2023. 5. 18.
[C++] 중복된 문자 제거, 가장 큰 수 찾기 중복된 문자 제거 문자열이 매개변수로 주어질 때, 문자열에서 중복된 문자를 제거하고 하나의 문자만 남긴 문자열 return #include #include #include using namespace std; string solution(string my_string) { string answer = ""; vector str; for(int i=0; i < my_string.size(); i++){ if(find(str.begin(), str.end(), string(1, my_string[i])) == str.end()){ answer += string(1, my_string[i]); } str.push_back(string(1, my_string[i])); } return answer; } 가장 큰.. 2023. 5. 17.
[C++] (대소문자 범위) 문자열안에 문자열, 숨어있는 숫자의 덧셈 (1) 문자열에 문자열 문자열 str, str2가 매개변수로 주어지면 str2가 str1에 포함되는지 판별하는 문제입니다. string의 find() 함수를 이용합니다. str2 가 str1 안에 포함된다면 string::npos을 반환합니다. #include #include using namespace std; int solution(string str1, string str2) { if (str1.find(str2) != string::npos){ return 1; } return 2; } 숨어있는 숫자의 덧셈 (1) 문자열 my_string이 매개변수로 주어질 때, my_string안의 자연수들의 합을 반환하는 문제입니다. 문자의 아스키코드 값으로 접근할 수 있는 문제입니다. #include #includ.. 2023. 5. 16.
[알고리즘] Isolation Forest Isolation Forest 정상 데이터로부터 학습한 모델을 기반으로 각 객체의 정상/이상 여부를 판단하는 방법론입니다. 이상치 데이터를 라벨링하지 않고, 정상 데이터만으로 이상탐지 모델을 학습할 때 사용하기도 합니다. 2008년 제안된 알고리즘이지만 현재까지도 이상치 탐지에 높은 성능을 보여 유용하게 사용됩니다. 알고리즘 포인트를 분리하기 위해 알고리즘은 속성을 무작위로 선택한 다음 해당 속성에 허용되는 최소값과 최대값 사이의 분할 값을 무작위로 선택하여 샘플에서 반복적으로 파티션을 생성합니다. 이렇게 여러 번 분할한 공간을 의사결정나무 (Decision Tree) 형태로 표현할 수 있습니다. 정상치일수록 완전히 고립시킬 수 있을 때까지 의사결정나무를 깊숙하게 타고 내려가야 합니다. 반대로 이상치의 .. 2023. 5. 9.