목록전체 글 (140)
개발자공부일기

https://www.acmicpc.net/problem/2018어떠한 자연수 N은, 몇 개의 연속된 자연수의 합으로 나타낼 수 있다. 당신은 어떤 자연수 N(1 ≤ N ≤ 10,000,000)에 대해서, 이 N을 몇 개의 연속된 자연수의 합으로 나타내는 가지수를 알고 싶어한다. 이때, 사용하는 자연수는 N이하여야 한다.예를 들어, 15를 나타내는 방법은 15, 7+8, 4+5+6, 1+2+3+4+5의 4가지가 있다. 반면에 10을 나타내는 방법은 10, 1+2+3+4의 2가지가 있다.N을 입력받아 가지수를 출력하는 프로그램을 작성하시오. 라는 간단한? 문제이다. 처음엔 그냥 1부터 갯수를 늘려가며 경우의 수를 다 구해볼까 했는데 10,000,000이 최댓값인걸 보니 당연히 안되겠다 싶었다. 그래서 책을..
문제 상황Next.js 15 프로젝트에서 동적 API 라우트(/api/boards/[postId])를 구현하던 중 다음과 같은 오류가 발생했다.Error: Route "/api/boards/[postId]" used `params.postId`. `params` should be awaited before using its properties. 아래의 API 라우트 핸들러에서 오류가 발생했습니다.export async function GET( req: NextRequest, context: { params: { postId: string } }) { const postId = context.params.postId; // 오류 발생 const post = await prisma.post.findU..
https://www.acmicpc.net/problem/10986 수 N개 A1, A2, ..., AN이 주어진다. 이때, 연속된 부분 구간의 합이 M으로 나누어 떨어지는 구간의 개수를 구하는 프로그램을 작성하시오.즉, Ai + ... + Aj (i ≤ j) 의 합이 M으로 나누어 떨어지는 (i, j) 쌍의 개수를 구해야 한다. 이게 무슨 말인가 보자 i번째부터 j번째까지의 구간합을 M으로 나누었을때 값이 0이 되는 경우의 수를 구하는 문제다. 일단 저번에 풀었던 1차원배열 구간합공식으로 구간합배열을 구하고 그 배열을 다시 M으로 나눠서 값을 바꾼다. 그렇게 했을때 배열[i]의 값이 0이라면 0번째부터 i번째의 구간합 나머지가 0이라는 뜻. => 구간합 나머지 배열에서 0의 갯수를 경우의수(answer..
1달짜리 인턴이 벌써 끝났습니다. 정말 짧았고 그만큼 빠르게 지나갔네요.일단 너무 아쉽습니다. 인턴에게 재택이 있다는 것.. 물어볼 기회가 많이 줄고 그러다 보니 간단한 문제로 씨름하는 경우가 꽤 있어서 시간이 아까웠습니다. 기간이 짧으니 기업에서도 1달 안에 교육까지 끝내고 일을 맡길만한 비교적 단순한 업무가 주였습니다.인턴들의 월급 또한 기업에서 부담하는 것이 아니라 인턴프로그램 주최 측에서 부담하기에 인턴들이 성과를 내든 말든 별로 상관이 없습니다. 그래서 퀄리티와 압박감이 너무 떨어졌어요. 그래서 한걸 후회하냐? 그렇진 않습니다. 그래도 초보자들끼리 만들던 코드만 보다가 실제로 서비스 중인 정재 된 코드를 구경할 기회도 있었고 분위기 좋은 스타트업 문화를 느껴보는 것도 좋았습니다.그렇다고 다시 ..
단일 책임 원칙 (SRP, Single Responsibility Principle)클래스(또는 모듈)는 하나의 책임만 가져야 한다.하나의 책임이란 하나의 "기능 담당 또는 변경의 이유"라고도 볼 수 있어요. 즉, 클래스가 바뀌어야 하는 이유가 하나만 있어야 합니다.여러 책임을 한 클래스에 몰아넣으면 변경이 생길 때 얽혀서 버그가 생기고 테스트도 어려워집니다.잘못된 예제class User { constructor(name, email) { this.name = name; this.email = email; } saveUserToDB() { // 사용자 정보를 DB에 저장 } sendEmail() { // 이메일 전송 }}문제점:데이터 역할(User 객체), DB 저장, 이..
회사측에서 한달인턴을 시작하기 전에 알아보면 좋다고하신 크롤링 도구들을 살펴볼 예정이다.모두 Python에서 동작한다(Python에서만 동작하는 도구도 있지만 아닌 도구들도 있다.)1. Requests개요HTTP 요청을 통해 웹 페이지의 HTML 코드를 가져오는 가장 기본적인 크롤링 도구입니다.자바스크립트 렌더링이 필요 없는 정적 페이지 크롤링에 매우 적합합니다.동작 방식서버에 GET, POST 등 HTTP 요청을 보냅니다.서버로부터 받은 응답(response)의 본문을 파싱하거나 저장합니다.보통 BeautifulSoup, lxml 등의 HTML 파서와 함께 사용합니다.주요 메서드 및 매개변수requests.get(url, params=None, headers=None, cookies=None, time..
https://www.acmicpc.net/problem/11660저번에 했던 구간합 문제의 2차원배열 버전이다. 이 문제도 시간이 촉박해서 구간합공식을 이용하는 문제다. 저번에 배운 cin,cout 최적화와 endl대신 개행문자를 사용했다.#include #include using namespace std;//구간 합 문제int main() { ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int size, quiz; cin >> size >> quiz; //2차원 배열의 원본A, 구간합B를 0으로 초기화하여 사이즈보다 하나 크게 생성 //=> 구간합 공식을 위해 0으로 채워진 공간이 필요함 vect..
https://www.acmicpc.net/problem/11659 수 N개가 주어졌을 때, i번째 수부터 j번째 수까지 합을 구하는 프로그램을 작성하는 구간 합 문제다. 아래처럼 풀었는데 시간초과가 난다. 디버깅을 해봤을때 결과는 다 맞다. 뭔가를 최적화해야한다는 뜻이다.#include using namespace std;int main(){ int dataCnt,quizCnt; int arr[100001]={}; cin>>dataCnt>>quizCnt; for(int i=1;i>temp; arr[i]=arr[i-1]+temp; } for(int i=0;i>start>>end; cout그래서 질문게시판을 봤는데 나같은 경우가..