728x90
반응형
728x90
반응형
최근 카카오 사태로 포스팅을 못하고 개인적인 사정으로 코딩 테스트를 못했다. 오늘의 코테는 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 = ..
주어진 문자열을 소문자에서 대문자 순서로 정렬하라. #include #include #include #include // 파라미터로 주어지는 문자열은 const로 주어집니다. 변경하려면 문자열을 복사해서 사용하세요. char* solution(const char* s) { // return 값은 malloc 등 동적 할당을 사용해주세요. 할당 길이는 상황에 맞게 변경해주세요. int len = strlen(s); char temp; char* answer = (char*)malloc((sizeof(char) * len)); strcpy(answer, ""); // answer clear strcpy(answer, s); for (int i = 0; i < len; i++) { // bubble sort ..
없는 숫자 더하기, 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; ..
숫자가 담긴 배열 absolutes 숫자의 개수(길이)가 담긴 배열 abolutes_len 숫자의 부호가 담긴 배열 signs 숫자의 부호 개수(길이)가 담긴 배열 signs_len 1. absoultes에 담긴 모든 숫자를 더함. 2. 부호를 판별해 fasle면 숫자를 음수로 변경하고 더함. #include #include #include // absolutes_len은 배열 absolutes의 길이입니다. // signs_len은 배열 signs의 길이입니다. int solution(int absolutes[], size_t absolutes_len, bool signs[], size_t signs_len) { int answer = 0; for(int i = 0; i < absolutes_len; ..
주어진 번호의 뒷자리 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..
https://namu.wiki/w/%EC%BD%9C%EB%9D%BC%EC%B8%A0%20%EC%B6%94%EC%B8%A1 콜라츠 추측 - 나무위키 만약 이 추측이 거짓이라면, 1로 가지 않는 반례가 존재한다는 것을 의미한다. 수학자들은 이런 대표적인 반례에 대해서 자기 자신으로 순환하는 루프가 존재할 것으로 예상한다[10]. 예를들어 namu.wiki 주어진 수가 1이 될때까지 반복해서 작업을 한다. 1. 주어진수가 짝수면 2로 나눈다. 2. 주어진수가 홀수면 3을 곱하고 1을 더한다. 3. 결과로 나온수에 같은 작업(1번 or 2번)을 1이 될때까지 반복한다. #include #include #include int solution(long num) { if(num == 1) { return 0; } ..
문자열 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 ==..