목록2025/06 (5)
개발자공부일기

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 저장, 이..