웹 성능을 최적화하는 것은 사용자 경험을 크게 향상시키고, 페이지 로딩 속도를 단축하며, SEO 성능을 높이는 데 중요한 역할을 한다. 특히 폰트와 이미지는 웹 페이지의 주요 리소스로 최적화를 통해 불필요한 네트워크 요청을 줄이고 렌더링 성능을 극대화 할 수 있다. Next.js는 이러한 최적화를 쉽게 수행할 수 있는 도구와 설정을 제공하여 개발자가 손쉽게 웹 성능을 개선할 수 있도록 돕는다. 이번 포스팅에서는 next.js에서 글꼴 및 이미지를 적용하는 방법에 대해 작성해보겠다. 1. 글꼴 적용하기 Next.js에서는 next/font 모듈을 사용하여 폰트를 쉽게 적용할 수 있다. 이 모듈은 Google Fonts와 같은 웹 폰트를 쉽게 통합할 수 있게 해주며, 폰트를 서버 측에서 로드하여 클라이언트..
오블완
문제 설명당신은 일렬로 나열된 n개의 집에 택배를 배달하려 합니다. 배달할 물건은 모두 크기가 같은 재활용 택배 상자에 담아 배달하며, 배달을 다니면서 빈 재활용 택배 상자들을 수거하려 합니다.배달할 택배들은 모두 재활용 택배 상자에 담겨서 물류창고에 보관되어 있고, i번째 집은 물류창고에서 거리 i만큼 떨어져 있습니다. 또한 i번째 집은 j번째 집과 거리 j - i만큼 떨어져 있습니다. (1 ≤ i ≤ j ≤ n)트럭에는 재활용 택배 상자를 최대 cap개 실을 수 있습니다. 트럭은 배달할 재활용 택배 상자들을 실어 물류창고에서 출발해 각 집에 배달하면서, 빈 재활용 택배 상자들을 수거해 물류창고에 내립니다. 각 집마다 배달할 재활용 택배 상자의 개수와 수거할 빈 재활용 택배 상자의 개수를 알고 있을 때..
문제 설명 어떤 물류 센터는 로봇을 이용한 자동 운송 시스템을 운영합니다. 운송 시스템이 작동하는 규칙은 다음과 같습니다.물류 센터에는 (r, c)와 같이 2차원 좌표로 나타낼 수 있는 n개의 포인트가 존재합니다. 각 포인트는 1~n까지의 서로 다른 번호를 가집니다.로봇마다 정해진 운송 경로가 존재합니다. 운송 경로는 m개의 포인트로 구성되고 로봇은 첫 포인트에서 시작해 할당된 포인트를 순서대로 방문합니다.운송 시스템에 사용되는 로봇은 x대이고, 모든 로봇은 0초에 동시에 출발합니다. 로봇은 1초마다 r 좌표와 c 좌표 중 하나가 1만큼 감소하거나 증가한 좌표로 이동할 수 있습니다.다음 포인트로 이동할 때는 항상 최단 경로로 이동하며 최단 경로가 여러 가지일 경우, r 좌표가 변하는 이동을 c 좌표가 변..
Next.js에서는 다양한 방법으로 스타일을 지정할 수 있습니다. 컴포넌트 스타일링부터 전역 스타일링까지 다양한 접근 방식을 지원하므로, 프로젝트의 필요에 따라 적절한 방식을 선택할 수 있습니다. 오늘은 Next.js에서 스타일을 적용하는 방법을 간단히 살펴보겠습니다. 1. CSS ModulesCSS Modules는 컴포넌트 수준의 스타일링을 위한 Next.js의 기본 옵션 중 하나입니다. 파일 이름을 .module.css로 지정하면, 해당 파일의 클래스가 컴포넌트에서만 적용되므로, 스타일의 충돌을 방지할 수 있습니다. 사용방법 1. styles 폴더에 Button.module.css 파일을 생성합니다./* styles/Button.module.css */.button { background-color..
오늘은 Next.js 를 처음 시작하는 사람들을 위한 블로그를 작성해 볼 것이다.그 전에 Next.js가 무엇인지, 왜 사용해야하는지부터 알아보자 ! Next.js란 ?Next.js는 React 프레임워크 위에 구축된 서버 사이드 렌더링(SSR)과 정적 사이트 생성(SSG)을 지원하는 강력한 프레임워크.이는 성능 최적화, SEO 개선, 빠른 초기 로딩 속도, 그리고 사용자 경험 향상과 같은 장점을 제공합니다. 왜 Next.js가 필요한가?SEO 개선: 서버 사이드 렌더링을 통해 페이지가 미리 렌더링되어 검색 엔진이 더 잘 인식할 수 있습니다.빠른 로딩 속도: 코드 스플리팅을 통해 필요할 때만 필요한 자바스크립트를 로딩하므로 초기 로딩 속도가 빠릅니다.정적 및 동적 페이지 생성: 정적 사이트 생성으로..
https://school.programmers.co.kr/learn/courses/30/lessons/17685 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr문제 설명자동완성 포털 다음에서 검색어 자동완성 기능을 넣고 싶은 라이언은 한 번 입력된 문자열을 학습해서 다음 입력 때 활용하고 싶어 졌다. 예를 들어, go 가 한 번 입력되었다면, 다음 사용자는 g 만 입력해도 go를 추천해주므로 o를 입력할 필요가 없어진다! 단, 학습에 사용된 단어들 중 앞부분이 같은 경우에는 어쩔 수 없이 다른 문자가 나올 때까지 입력을 해야 한다. 효과가 얼마나 좋을지 알고 싶은 라이언은 학습된 단어들을 찾을 때 몇 ..
숨바꼭질 2 문제수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 때 걷는다면 1초 후에 X-1 또는 X+1로 이동하게 된다. 순간이동을 하는 경우에는 1초 후에 2*X의 위치로 이동하게 된다.수빈이와 동생의 위치가 주어졌을 때, 수빈이가 동생을 찾을 수 있는 가장 빠른 시간이 몇 초 후인지 그리고, 가장 빠른 시간으로 찾는 방법이 몇 가지 인지 구하는 프로그램을 작성하시오.입력첫 번째 줄에 수빈이가 있는 위치 N과 동생이 있는 위치 K가 주어진다. N과 K는 정수이다.출력첫째 줄에 수빈이가 동생을 찾는 가장 빠른 시간을 출력한다.둘..
1. JavaScript에서의 Array 사용JavaScript에서는 하나의 배열에 숫자, 문자열, 함수 등 다양한 타입의 데이터를 혼합해서 넣을 수 있습니다.const array = [1, "JavaScript", () => console.log("Hello")];console.log(array[0]); // 1console.log(array[1]); // "JavaScript" 이처럼 JavaScript의 배열은 다양한 타입의 데이터를 자유롭게 담을 수 있는 유연성을 제공하지만, 잘못된 데이터가 배열에 포함될 가능성도 큽니다. 이로 인해 데이터의 타입 일관성을 보장하기 어렵고, 예상치 못한 버그가 발생할 수 있습니다. 2. TypeScript에서 Array 타입 선언 방법TypeScript에서는 Ar..
https://school.programmers.co.kr/learn/courses/30/lessons/340212 문제 설명 당신은 순서대로 n개의 퍼즐을 제한 시간 내에 풀어야 하는 퍼즐 게임을 하고 있습니다. 각 퍼즐은 난이도와 소요 시간이 정해져 있습니다. 당신의 숙련도에 따라 퍼즐을 풀 때 틀리는 횟수가 바뀌게 됩니다. 현재 퍼즐의 난이도를 diff, 현재 퍼즐의 소요 시간을 time_cur, 이전 퍼즐의 소요 시간을 time_prev, 당신의 숙련도를 level이라 하면, 게임은 다음과 같이 진행됩니다. diff ≤ level이면 퍼즐을 틀리지 않고 time_cur만큼의 시간을 사용하여 해결합니다. diff > level이면, 퍼즐을 총 diff - level번 틀립니다. 퍼즐을 틀릴 때마다,..