정수 num이 짝수일 경우 "Even"을 반환하고 홀수인 경우 "Odd"를 반환하는 함수, solution을 완성해주세요.
function solution(num) {
var answer = '';
return answer;
}
웹종합 강의에서도 나왔던 예제로 금방 풀 수 있는 문제였지만 programmers를 처음 사용해서, 파이썬에 익숙해져있다가 갑자기 자바스크립트를 써야해서 처음에 삽질을 많이했다.
문제는 if/else 구문으로 num 을 %2로 나눠서 나머지가 0이면 "Even" 아니면 "Odd"로 출력된다
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
char* solution(int num) { #function 함수명(매개변수들..){
// 리턴할 값은 메모리를 동적 할당해주세요
char* answer = (char*)malloc(sizeof(char));
if (num%2 == 0) # 이 함수에서 실행할 코드들
answer = "Even";
else
answer = "Odd";
return answer; # return 변환 값
}
동적할당?
동적 할당(Dynamic Allocation)이란 프로그램을 작성할 때(Compile Time 또는 Design Time) 메모리 필요량을 지정하는 정적 할당과는 달리 실행중에(Run Time) 필요한만큼 메모리를 할당하는 기법이다.
메모리 할당?
메모리 관리지에게 필요한 바이트만큼 달라고 요청 후 관리자는 연속된 메모리를 찾아서 변환한다(메모리주소형태 : 포인터로 저장가능)
malloc()
void* malloc(size_t size);
size 바이트 만큼의 메모리를 반환해줌
초기화 안해준다 (처음 들어있는 값은 쓰레기값)
메모리가 없거나 실패하면 NULL반환
반드시 free()와 함께 사용!!!
#include <stdlib.h>
size_t i;
int* nums = malloc(10 * sizeof(int)); // 10 * 4 : 40byte할당 해주세요
for (i = 0; i < 10; i++){
nums[i] = i * 10;
}
free(nums) // 다 사용했으니 해제해주세요
첫 코딩테스트 문제였다. 쉬운 문제이기도 했지만 머리로는 어떻게 풀지 알겠는데 막상 빈 화면에 코드를 쓰려고 하면 막막하다. 구글링하고 따라써보고 하는 수 밖에 없는거 같다
구글링 해보니 이 문제는 삼항연산자로 풀 수도 있다.
+개삽질했습니다 프로그래머스 사이트에서 자바스크립트 언어로 바꿔야하는데 기본 설정인 C언어로 두고 하려니 주어진 기본 코드에 할당뭐시기가 나온거였음..하
삼항연산자란?
조건부 삼항 연산자는 JavaScript에서 세 개의 피연산자를 취할 수 있는 유일한 연산자로, 보통 if 명령문의 단축 형태로 쓰인다
condition ? exprIfTrue : exprIfFalse
// 삼항연산자를 이용한 풀이
function solution(num) {
return (num % 2 === 0? "Even":"Odd")
}
// num을 2로 나눈 나머지가 0이면(true) Even을 반환하고, 그렇지 않으면(false) Odd를 반환해라.
오 더 간단한 코드가 되었다.
function solution(num) {
var answer = '';
if (num%2 === 0){
return answer = "Even";
} else {
return answer = "Odd";
}
return answer;
}