[Node.js] 유저 회원가입/로그인 구현하기 With Mongoose - 1
어떤 프로그램이든 회원가입 로그인은 기본적으로 구현해야 하는 부분 ,,, 효율적인 방법인지는 모르겠지만 간단하게 회원가입과 로그인을 구현해보자. 우선 유저 데이터에 어떤 값이 들어갈지를 미리 설정해야 한다. DayDream에는 회원가입 시 이메일, 비밀번호, 비밀번호 확인, 휴대폰 인증(추후 시간이 된다면...), 나이, 키, 몸무게, 자기소개, 닉네임을 받고 있다. 그에 맞춰서 유저 모델을 설정해주면 된다. /models/userModel.js const userSchema = new mongoose.Schema({ email: { type: String, required: [true, "이메일을 입력해주세요."], unique: true, lowercase: true, validate: [valida..
[알고리즘] 효율적인 소수 구하기, 에라토스테네스의 체
소수는 1과 자기 자신만을 약수로 가지는 수를 말한다. 즉 직관적으로 이를 코드로 표현한다면, for i in range(2, n): if n%i == 0: return False return True 단순히 2부터 n-1까지 순회하며 나눠지는 수가 있다면 소수가 아니라고 판단하면 된다. 하지만 이는 n까지 모두 순회하므로 O(n)의 시간복잡도를 가진다. 만약 n이 엄청 커진다면? 시간초과가 날 확률이 높다. 그렇다면 효율적인 소수를 구하려면 어떤 방식을 사용해야 할까? 우선 약수의 특성을 확인해야 한다. 예를 들어 16의 약수를 확인해보면, [1, 2, 4, 8, 16] 를 얻을 수 있다. 15의 약수는 [1, 3, 5, 15] 를 얻을 수 있다. 즉 가운데의 수를 기준으로 대칭적인 모습을 보이는데, ..