본문 바로가기

문제 풀기

(38)
[코딩인터뷰 완전정복] 1.5 하나 빼기 Q : 문자열 두개가 주어졌을 때, 문자열을 같게 만들기 위한 편집횟수가 1회 이내인지 확인하는 함수를 작성하라. 가능한 편집 = 문자 삽입, 문자 삭제, 문자 교체 #include bool CheckChange(char str1[], char str2[], int len1, int len2) { if (len1 - len2 > 1 || len2 - len1 > 1) return false; int maxLength = len1 > len2 ? len1 : len2; int change = 0; int insert = 0; int remove = 0; if (len1 == len2) { for (int i = 0; i < maxLength; i++) { if (str1[i] == str2[i]) cont..
[코딩인터뷰 완전정복] 1.4 회문 순열 Q : 주어진 문자열이 회문의 순열인지 아닌지 확인하는 함수를 작성하라. ​ A : 각 문자의 갯수를 카운트하여 홀수인 문자열 갯수가 1개 이하면 true 아니면 false ​ 추가 : 문자를 읽을때마다 홀수인 문자의 개수를 갱신하면 확인작업이 생략된다. 추가2 : 비트마스크를 이용하는 방법도 있다.
[코딩인터뷰 완전정복] 1.3 URLify Q : 문자열에 들어 있는 모든 공백을 '%20'으로 바꾸는 메서드를 작성하라. 인풋 문자열의 길이가 함께 주어진다. 공간복잡도는 고려하지 않는다. #include char* TransString(char input[], int length); int main() { char input[] = {'c','d',' ','a',' ','e','h','\0'}; printf("%s\n", TransString(input, 8)); } char* TransString(char input[], int length){ int transLength = 0; for (int i = 0; i < length; i++) { if (input[i] == ' ') transLength += 3; else transLength..
Kick Start 2019 Round A - Training https://codingcompetitions.withgoogle.com/kickstart/round/0000000000050e01/00000000000698d6 해답 1 #include void arraySort(int *arr, int start, int end) { if (end - start = ep) break; int temp = *sp; *sp = *ep; *ep = temp; } if(pp==start) arraySort(arr, pp + 1, end); else { arraySort(arr, start, pp - 1); arraySort(arr, pp, ..
[코딩인터뷰 완전정복] 1.2 순열 확인 Q : 문자열 두 개가 주어졌을 때 이 둘이 서로 순열 관계에 있는지 확인하는 메서드를 작성하라. #include bool CheckIsPermutation(char* str1, char* str2, int len1, int len2); int main() { std::ios_base::sync_with_stdio(false); char string1[100]; char string2[100]; std::cin.getline(string1, 99); std::cin.getline(string2, 99); printf("%d\n", CheckIsPermutation(string1, string2, strlen(string1), strlen(string2))); } bool CheckIsPermutation..
[코딩인터뷰 완전정복] 1.1 중복이 없는가 문자열이 주어졌을 때, 이 문자열에 같은 문자가 중복되어 등장하는지 확인하는 알고리즘을 작성하라. 해법1 - 문자열의 처음부터 한 문자씩 순회하며 자료구조(스텍, 큐 등)에 입력된 문자열을 저장한뒤 새로운 문자를 확인 할 때마다 자료구조를 순회하며 중복되는 문자가 있는지 확인한다. public bool IsDuplicate(char[] str){ var inputStack = new Stack(); foreach(var ch : str){ foreach(var stackChar : inputStack){ if(ch==stackChar) return true; } inputStack.add(ch); } return false; } 해법2 - 입력문자의 갯수만큼의 크기를 가진 char 배열을 생성한다. 하나..