Day 18
문자열, 수학, 조건문, 정렬
문자열 str1, str2가 매개변수로 주어집니다. str1 안에 str2가 있다면 1을 없다면 2를 return하도록 solution 함수를 완성해주세요.
function solution(str1, str2) {
return str1.includes(str2) ? 1 : 2
}
어떤 자연수를 제곱했을 때 나오는 정수를 제곱수라고 합니다. 정수 n이 매개변수로 주어질 때, n이 제곱수라면 1을 아니라면 2를 return하도록 solution 함수를 완성해주세요.
function solution(n) {
return Number.isInteger(Math.sqrt(n)) ? 1 : 2
}
어떤 세균은 1시간에 두배만큼 증식한다고 합니다. 처음 세균의 마리수 n과 경과한 시간 t가 매개변수로 주어질 때 t시간 후 세균의 수를 return하도록 solution 함수를 완성해주세요.
function solution(n, t) {
// 7 14 28 56 112
let num = n;
let answer = n;
for(let i=0; i<t; i++) {
answer += num;
num += n;
num = answer;
}
return answer;
}
이 문제는 이상하게 풀어버렸다. 저 위에 주석으로 써놓고도 규칙이 생각이 안 났는지 이전 숫자를 더한 걸 더하고 더하는 요상한 방식으로 풀어서 다시 풀었다!
이건 다른 사람의 풀이인데 신기해서 이해하려고 적는다. 비트 연산자는 처음 알았다
// 비트 연산자
function solution(n, t) {
return n << t;
}
function solution(n, t) {
while (t-- > 0) n*=2;
return n;
}
// Math.pow
function solution(n, t) {
return n*Math.pow(2,t);
}
function solution(n, t) {
return n*(2**(t))
}
// 내가 풀려던 방식은 아마 이거
function solution(n, t) {
let answer = n;
for(let i = 0; i < t; i++){
answer *= 2
}
return answer;
}
function solution(n, t) {
var answer = 0;
answer = n * (2**t);
return answer;
}
정말 간단한 문제인데 풀이가 가지각색인 게 신기하당. 다른 사람의 풀이를 보며 많이 배워가는 것 같다.
영어 대소문자로 이루어진 문자열 my_string이 매개변수로 주어질 때, my_string을 모두 소문자로 바꾸고 알파벳 순서대로 정렬한 문자열을 return 하도록 solution 함수를 완성해보세요.
function solution(my_string) {
return [...my_string.toLowerCase()].sort().join('')
}
벌써 Day 18! 문자열 정렬하기같이 자바스크립트 메서드를 써서 해결할 수 있는 문제들은 진짜 금방 푸는 것 같다. 오늘은 15분 내로 4문제를 다 풀었다. 아무래도 실력을 늘리려면 level 2~3을 풀어야 하지만 지금은 습관을 들여서 자신감을 키우려는 거니까..! 며칠 뒤엔 더 어려운 문제도 같이 풀어봐야겠다.
내가 듣는 유데미 Next.js 강의 파트랑 현재 설치한 버전인 13이 다른데 공식문서엔 뭐가 이리도 많고 다 영어라 어디서부터 어떻게 학습해야 할지 몰라서 일단 이것저것 만져보며 배운 것 같다ㅜㅜ
내가 설치한 latest 버전에선 src/app 디렉토리로 관리되는데, app에 api폴더도 작성하고 css파일 layout도 다 들어있어서 역할? 의미는 아직 모르겠다.. 일단 app 폴더에 라우팅을 할 파일들을 작성하는데 폴더이름이 url 부분이고 파일 이름은 무조건 page로 작성해야 한다.
// app/classics/page.tsx
export default function Page() {
return (
<div>Page</div>
)
}
// app/classics/[slug]/page.tsx
type Props = {
params: {
slug: string;
};
};
export default function Page({ params }: Props) {
return <h1>{params.slug} Page!</h1>
}
domain.com/classics
접속하면 보이고domain.com/classics/~
에 접속 시 확인할 수 있다!얘네는.. 직접 api에서 데이터를 가져오는 것도 아닌데 DUMMY_CLASSICS 데이터를 읽어오지 못해와서 낼 해결하려고 한다^^
import { GetStaticProps } from 'next'
import ClassicList from '@/components/classics/ClassicList';
export interface Classic {
id: number;
title: string;
composer: string;
genre: string;
year: number;
duration: string;
description: string;
coverImage: string;
}
export const DUMMY_CLASSICS: Classic[] = [
{
id: 1,
title: "쇼팽 피아노 협주곡 2번",
composer: "Frédéric Chopin",
genre: "Concerto",
year: 1830,
duration: "35:00",
description: "쇼팽의 피아노 협주곡 F단조 2번 Op. 21은 그의 피아노와 오케스트라를 위한 가장 유명한 작곡 중 하나입니다.",
coverImage: "...",
},
];
interface Props {
classics: Classic[];
}
export default function Home(props: any) {
console.log(props)
return (
<main className="">
<ClassicList classics={classics} />
</main>
)
}
export async function getServerSideProps() {
// fetch data from an API
// 서버에서실행됨 클라이언트X
return {
props: DUMMY_CLASSICS
};
}
// export const getStaticProps = () => {
// // fetch data from an API
// return {
// props: {
// test: 'DUMMY_CLASSICS',
// },
// }
// }
그리고 api 폴더에 form에 연결할 mongodb connect handler 함수 코드를 작성하는데 제대로 돌아가지 않아서 내일 해결!~
npm i
Node.js 에러npm err! code err_ssl_cipher_operation_failed
프로젝트들을 리팩토링하고 깃과 깃허브를 연습하기 위해 포크해온 저장소를 다 로컬에 clone해와서 npm i
를 하려고 하는데 똑같은 에러가 계속 뜨는 거다..!!!!
정말 구글링하고 챗지피티한테 물어봐서 별걸 다 해봤는데 해결이 안 돼서 괴로웠다.
node -v
18.16.0
nvm install 16.16.0
nvm use 16.16.0
node -v
18.16.0 <- 안 바뀜
npm cache clean --force
와파껐다다시켜기
node_modules 폴더 삭제하고 다시 설치. 이걸 젤 많이..
rm -rf node_modules
npm install
npm config set registry https://registry.npmjs.org/
정말 나온 건 다 해봤는데 안 돼서 마지막에 어저께 새로 깔은 따끈따끈한 18.16.0 nodejs 프로그램을 삭제하고 16.16.0을 다운받아서 설치했더니 됐다.. 하하
좀 많이 지쳐서 내일부터 브랜치 따서 코딩 진행해야겠다. 파이팅!