2025/04 9

나혼자 미슐랭 – DB 설계 정리

1. DB 설계 목표관리 편의성을 높이기 위해 soft delete(deleted 플래그) 방식을 적용리뷰 수정 가능성을 고려해 modified 컬럼 추가불필요한 과도한 데이터 저장을 방지하기 위해 varchar 크기 최소화실시간 별점 계산을 위해 avg_rating 필드 사전 설정"created" 이름 통일로 컬럼명 일관성 확보 2. Entity/Table 설계 User 테이블컬럼명 타입 제약조건 설명idBIGINTPK, Auto Increment사용자 고유 IDusernameVARCHAR(20)NOT NULL사용자 닉네임emailVARCHAR(50)NOT NULL, UNIQUE사용자 이메일 (중복 방지)passwordVARCHAR(100)NOT NULL암호화된 비밀번호createdDATETIMEDEF..

나혼자 미슐랭 – 요구사항 명세서

1. 프로젝트 개요프로젝트명: 나혼자 미슐랭 (Solo Michelin)목표: 맛집들을 기록하고 평가하며, 혼밥 유저들의 경험을 공유할 수 있는 웹/앱 기반 서비스 구축개발인원: 2명 (박희범, 황인규)주요 기술 스택: Spring Boot, React, MYSQL, JWT, 지도 API(Google or NAVER)개발 기간: 2025년 4월 ~ 6월 (예정)활용 목적: 상업화 + 실무형 협업 경험축적 2. 시스템 개요전체 시스템 설명: 나혼자 미슐랭은 방문한 맛집을 지도 기반으로 탐색하고, 평가와 리뷰를 남길 수 있는 개인화된 맛집 기록 플랫폼입니다.핵심 기능 소개:사용자 별점 평가 기능 + 리뷰 기능사용자 방문 히스토리 조회 기능시스템 아키텍쳐:클라이언트 – 서버 구조 (React FE Spring..

나혼자 미슐랭 – 프로젝트 기획서

1. 프로젝트 소개프로젝트명: 나혼자 미슐랭 (Solo Michelin)목표: 맛집을 기록하고 평가할 수 있는 개인화된 맛집 리뷰 플랫폼 구축. 맛집을 평가하고 기록하는 유저를 위한 서비스에 특화된 기능 제공 2. 기획 배경문제 인식기존 플랫폼 (네이버or 구글)에서 맛집을 검색할 때, 내 평점이 아닌 다른 사용자들의 평점만 확인할 수 있음.나 또는 연인이 자체적으로 맛집을 평가해서 작성할 수 있는 플랫폼의 부재해결 방향나만의 최적화된 맛집 탐색/리뷰 플랫폼지도 기반으로 맛집을 탐색하고, 나만의 기록 저장 3. 주요 타겟 (페르소나)👤 직장인 A (30대, 혼자 맛집 탐방선호)서울 시내 맛집들을 꾸준하게 탐험하며 나만의 맛집 평가 리스트를 작성하고 싶음👤 대학생 커플 B, C (20대 후반, 데이트를..

[백준] 치킨 배달 - 백준 15686 | 골드 V

문제 링크https://www.acmicpc.net/problem/15686 문제 요약NxN 도시 지도에서0: 빈 칸1: 집2: 치킨집이 중 M개의 치킨집만 남기고 나머지는 폐업해야 함도시의 치킨 거리 = 모든 집의 "가장 가까운 치킨집 거리"의 합이 치킨 거리의 최솟값을 구하는 문제 처음엔 완전탐색으로,,그냥 단순하게도시의 모든 치킨집 중 M개 고르고각 조합마다 도시 전체 치킨 거리 계산해서그 중 최솟값을 구하면 되겠다고 생각했다.그대로 itertools.combinations()로 조합 만들고,각 조합마다 거리 계산을 해봤다.결과는 잘 돌아간다.. 하지만 M이 13이면 조합은 10,000개 이상 나옴중복없이 효율적으로 순회하는게 빠름 개선된 방식 - combinations + 최소 거리조금 개..

Coding/백준 2025.04.18

[프로그래머스] 2023 KAKAO BLIND RECRUITMENT - 미로 탈출 명령(Lv.3)

문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/150365 문제 요약(x, y) 위치에서 시작해, (r, c) 위치까지 정확히 k번 이동해서 도달해야 한다.이동 방향은 'd', 'l', 'r', 'u' 네 가지.이동 가능한 경로 중 사전순으로 가장 빠른 문자열을 출력.불가능하면 "impossible"을 출력.처음엔 DFS로..처음에는 DFS로 모든 경로를 다 탐색하면서(x, y) → (r, c)로 도달할 수 있는 경로를 전부 모아서그 중 사전순으로 가장 빠른 걸 고르면 되겠다고 생각했다.실제로 그렇게 짰고, 로직도 잘 돌아가는 듯 보였다.하지만 결과는...❌ 시간초과, 런타임에러이유는 간단!이 문제는 도달할 수 있는 경로가 너무 많고..

[프로그래머스] 단어변환 (Lv.3) - (BFS/DFS)

처음 나의 풀이 (동작은 됨)from collections import dequedef solution(begin, target, words):    visited = [False] * len(words)    queue = deque()    for word in words:  # 후보 단어 삽입        diff = 0        for idx in range(len(word)):            if begin[idx] != word[idx]:                diff += 1        if diff == 1:            queue.append((word, 1))            visited[words.index(word)] = True    while queu..

인증(Authentication) 기본 개념 (Spring boot / Flask

Flask와 Spring boot 프로젝트를 진행하면서 회원가입/로그인 및 인증부분은 프로젝트 완성도 면에서 중요하다고 생각되어 이번기회에 이부분에 대해서 실제 서비스에서 사용되는 로직과 가깝게 구현할 수 있도록 공부를 진행중이다.  인증(Authentication) 기본 개념인증이란?👉 “이 사용자가 누구인지 증명하는 과정”(예: 로그인 → 사용자 정보를 확인하고 ‘누군지’ 알아내는 것) Authentication로그인처럼 "이 사람이 누군가?" 증명Authorization권한 검사 (예: 관리자인가 ??)Session서버에 저장하는 로그인 정보JWT (Token)클라이언트에 저장하는 로그인 정보 (stateless)OAuth2소셜 로그인 방식 (카카오, 네이버, 구글 등)HttpOnly 쿠키보안 강..

CS/필수지식 2025.04.10

[프로그래머스] 카펫 (Lv.2) - (완전탐색)

문제 설명프로그래머스 Lv.2 - 카펫 문제중앙에 노란색 타일로 채워진 직사각형이 있고, 그 주위를 갈색 타일로 감싸서 카펫을 만들었다.주어진 갈색(brown) 타일 수와 노란색(yellow) 타일 수를 기반으로카펫의 가로, 세로 길이를 구하라.조건 요약전체 타일 수 = brown + yellow(가로 - 2) * (세로 - 2) == yellow 를 만족해야 함가로 ≥ 세로 조건처음에 시도한 방식: 소인수분해 + 조합from itertools import combinationsdef multiple_tuple(tuple):    result = 1    for i in tuple:        result *= i    return resultdef solution(brown, yellow):    b..

Date Helper 개발일지 #5 – 현실적인 선택, 구글과 카카오의 공존 (2025.03.31)

문제의 연장 – “지도 미리보기”가 보이지 않는다..GPT 기반 추천 문제를 해결하며 Kakao 장소 검색 API로 전환했지만,새로운 이슈가 발생했다.바로 썸네일 옆에 지도 미리보기 이미지가 표시되지 않는 문제였다.  🔍 원인 분석 .. !Kakao Static Map API의 한계클라이언트에서 직접 호출 → CORS 문제 발생백엔드에서 이미지 받아 Base64로 전송 → 이미지 깨짐 & 속도 이슈 발생그래서 그냥 Google API를 사용하는게 어떨까 생각했다.  ✅ Google Static Map API 도입결국 지도 썸네일 이미지는 Google Static Map API로 전환했다.장점은 다음과 같다:이미지 URL을 로 바로 불러올 수 있음위치 정확도 높고, 깔끔한 지도 스타일빠른 로딩 속도 클릭..

Project/Date Helper 2025.04.04