728x90
반응형
728x90
반응형
memset은 변수를 초기화시킬 때 많이 사용하는 C 표준 함수다. 우리가 흔히 알고 있기로는 변수를 어떤 값으로 초기화시킬 때 사용한다고 알고 있다. 함수 원형을 살펴보면, void *memset(void *dest, int c, size_t count); 위와 같다. 반환하는 값은 전달인자 c로 변경된 *dest 다. 아래 코드를 살펴보자. #include int main(void) { char array[10] = {1,2,3,4,5,6,7,8,9,0}; for(int i = 0; i < 10; i++){ printf("%d ", array[i]); } memset(array, 0, 10); for(int i = 0; i < 10; i++){ printf("%d ", array[i]); } } 첫번..
최근 카카오 사태로 포스팅을 못하고 개인적인 사정으로 코딩 테스트를 못했다. 오늘의 코테는 2021카카오 채용연계형 인턴십에 나온 문제! 고민을 조금 하기는 했지만 strncmp로 쉽게 해결했다. #include #include #include #include // 파라미터로 주어지는 문자열은 const로 주어집니다. 변경하려면 문자열을 복사해서 사용하세요. int solution(const char* s) { int answer = 0; char numstr[10][6] = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"}; for(int i = 0; i =..
3진법, 당황했다. 우선 내가 짠 코드 #include #include #include int solution(int n) { int answer = 0; int square = 0; int buff[5000] = {0, }; while(n > 0) { buff[square++] = n%3; n/=3; } for(int i = 0; i < square; i++) { answer = answer + (buff[i] * (pow(3, (square-i-1)))); } return answer; } 정답은 통과했지만, 맘에들지 않는다. 아래는, 감탄사가 나오는 코드 역시 세상에 천재는 많다. 굿굿 #include #include #include int solution(int n) { int temp = 0; ..
이번 코딩테스트는 피보나치 수 아..근데 문제가 좀 이상하다 . 2이상의 n번째 피보나치 수를 1234567으로 나눈 나머지를 리턴하라고 해서 아래와같이 작성했더니 테스트 7번부터 실패로 나오기 시작한다. #include #include #include int solution(int n) { int answer = n%1234567; int F1 = 0; int F2 = 1; for(int i = 1; i < n; i++) { answer = F1+F2; F1 = F2; F2 = answer; } return answer % 1234567; } for문으로 피보나치 수를 구한다음 for문을 빠져나오면 answer에 n 번째 피보나치 수가 있기 때문에 1234567로 나눈 나머지 값을 리턴하면 답이 맞다고..
두 정수 a, b 가 주어진다. a부터 b 까지 숫자의 약수를 구한다. 약수의 갯수가 짝수면, 해당 수를 더하고, 홀수면 뺸다. 다양한 코드가 있지만 거의 대부분 나와같이 코드를 작성했고, 어떤 한분이 조금 독특한 방식으로 코드를 작성했는데, 이건 뭐 개인의 취향이지만 난 가독성도 중요하게 생각한다. 짧고 간결한것도 중요하지만, 누구나 다 쉽게 읽고 빠르게 파악할 수 있도록 코드를 짜는것도 중요하다고 생각한다. #include #include #include int solution(int left, int right) { int answer = 0; int count = 1; // 1은 무조건 포함 int len = right - left; // left 부터 right 까지 갯수 for(int i = ..
없는 숫자 더하기, 0부터 9까지의 숫자 중 일부가 들어있는 정수 배열 numbers가 매개변수로 주어집니다. numbers에서 찾을 수 없는 0부터 9까지의 숫자를 모두 찾아 더한 수를 return 하도록 solution 함수를 완성해주세요. 문제를 해결하는 방법은 2가지다. 1. 0부터 9까지 모두 더하면 45다. 배열 numbers에 있는 모든 숫자를 더한 다음 45에서 빼면 간단하게 해결 2. 배열에서 없는 숫자를 골라낸 다음 더하는 방법 실제로 기업에서 이런 테스트가 나왔을 때 1번과 같이 해결한다? 코딩 테스트는 통과하겠지만 풀이 과정 또한 중요하기 때문에 나 같으면 틀린 것으로 채첨 할 것 같다. 문제에는 분명 "모두 찾아 더한 수"라고 되어 있다. 1번 과같이 해결한 방법은 더한수를 리턴한..
아... 문자열에 취약한 콩이... 임베디드 개발을 하다 보면 문자열을 다룰일이 거의 없다. 아니 정확히 말하면 있는데 보통 하나의 바이트로 처리를 하니까 특별히 신경 쓸 일이 없다. 그리고, 한글? 다룰일이 없다. 이번 기회에 공부했다. 1. 길이가 n인 "수박수박수박수박수박..."과 같은 패턴을 유지하는 문자열을 리턴 2. 홀수면 "수", 짝수면 "박"으로 끝남. #include #include #include #include char* solution(int n) { // 리턴할 값은 메모리를 동적 할당해주세요. char* answer = (char*)malloc(((sizeof(char)*3)*n)); strcpy(answer, ""); // 쓰레기값 제거 for(int i = 0; i < n; ..
주어진 번호의 뒷자리 4개를 제외하고 모두 '*'로 가리기 #include #include #include #include // 파라미터로 주어지는 문자열은 const로 주어집니다. 변경하려면 문자열을 복사해서 사용하세요. char* solution(const char* phone_number) { // return 값은 malloc 등 동적 할당을 사용해주세요. 할당 길이는 상황에 맞게 변경해주세요. char* answer = (char*)malloc(sizeof(char) * 20); int len = strlen(phone_number); int i = 0; while((len-i) > 4) { answer[i] = '*'; i++; } strcpy(&answer[i], &phone_number[i..
두 정수가 주어졌을 때 두 정수 사이의 합을 구해서 리턴, ex) 3, 5가 주어지면 3+4+5 = 12, 12를 리턴 ex) 5, 3으로 주어져도 위와 같이 12를 리턴해야 함. 내가 작성한 코드, 대부분 이런 방식으로 해결했다. #include #include #include long long solution(int a, int b) { long long answer = 0; int s, e; s = (a > b) ? b : a; e = (a > b) ? a : b; printf("%d, %d", s, e); for ( int i=s; ib) //if a is greater, replace num. num = a-b+1; return (long long) sum*num/2; //cast the num..
문자열 str을 정수형으로 변환하는 문제, 1. str의 맨 앞에는 부호가 올 수 있다. 2. s는 부호와 숫자로만 이루어져 있다. 3. str은 0으로 시작하지 않는다. 조건들이 있지만 주의해야할 내용은 없는것 같다. #include #include #include int solution(const char* s) { int answer = 0; answer=atoi(s); return answer; } atoi 함수를 사용하면 해결된다. Ascii to Integer 함수다. 다른 방법으로는 #include #include #include int solution(const char* s) { int answer = 0; sscanf(s, "%d", &answer); return answer; } ss..
하샤드 수 구하기, https://ko.wikipedia.org/wiki/%ED%95%98%EC%83%A4%EB%93%9C_%EC%88%98 하샤드 수 - 위키백과, 우리 모두의 백과사전 위키백과, 우리 모두의 백과사전. 하샤드 수 또는 니번 수는 주어진 진법에서 그 수의 각 자릿수 숫자의 합으로 그 수가 나누어지는 양의 정수를 말한다. 즉 이말은 하샤드 수의 정의가 자기자신 ko.wikipedia.org #include #include #include bool solution(int x) { bool answer = false; int harshad=0; int xbuf=x; while(xbuf > 0) { harshad += xbuf % 10; xbuf /= 10; } if(x % harshad ==..
입력된 정수 n이 어떤 양의 정수 x의 제곱인지 아닌지 판별하는 문제, 문제풀이 중 알아낸것 1. n에 0.5를 제곱하면 x가 나온다. 2. 소수점의 판별은 소수점 n에서 강제 형변환한 값을 빼서 나머지가 0이 아니면 소수다. 3. sqrt 함수 내가 작성한 코드 #include #include #include #include long long solution(long long n) { long long answer = 0; double exponentiation; exponentiation = pow(n, 0.5); // sqrt(n); 대체 가능 exponentiation = pow((exponentiation+1), 2); if((exponentiation - (long long)exponentia..