개발새발
close
프로필 배경
프로필 로고

개발새발

  • 분류 전체보기 N
    • 회고
    • 정보처리기사
    • 공부
      • Spring
      • Docker
      • 오류
    • 개발 일지
    • 코딩테스트 N
      • 개념
      • 문제풀이 N
  • 홈
  • 태그
  • 방명록

네트워크 (BFS/DFS)

1. BFS 풀이from collections import dequedef solution(n, computers): visited = [False] * n count = 0 for i in range(n): if not visited[i]: queue = deque([i]) visited[i] = True while queue: node = queue.popleft() for next_node in range(n): if computers[node][next_node] == 1 and not visited[next_node]: ..

  • format_list_bulleted 코딩테스트/문제풀이
  • · 2025. 8. 14.
  • textsms

BFS (Breadth-First Search, 너비 우선 탐색)

그래프나 트리에서 현재 노드와 인접한 모든 노드를 먼저 방문한 뒤, 그 다음 깊이로 넘어가는 방식이다. 즉, 가까운 노드부터 방문하며 점점 멀리 탐색하는 방법이다.큐(Queue) 자료구조를 사용해 구현하는 경우가 많다.ex) 최단 경로 문제, 레벨 탐색, 최단 거리 계산 1. 탐색 시작 노드를 큐에 삽입하고 방문 처리를 한다.2. 큐에서 노드를 꺼낸 뒤에 해당 노드의 인접 노드 중에서 방문하지 않은 노드를 모두 큐에 삽입하고 방문 처리한다.3. 더 이상 2번의 과정을 수행할 수 없을 때까지 반복한다. from collections import deque# BFS 메서드 정의def bfs(graph, start, visited): # 큐 구현을 위해 eque 라이브러리 사용 queue = deque(..

  • format_list_bulleted 코딩테스트/개념
  • · 2025. 8. 8.
  • textsms

DFS (Depth-First Search, 깊이 우선 탐색)

DFS는 그래프나 트리에서 한 방향으로 최대한 깊게 탐색하는 방법이다. 즉, 한 노드에서 시작해 연결된 노드를 따라 깊게 들어간 후, 더 이상 갈 곳이 없으면 들어와서 다른 경로를 탐색한다.스택(Stack) 자료구조를 이용하거나 재귀함수로 구현하는 경우가 많다.대표적으로 미로 찾기, 경로 탐색, 컴포넌트 개수 세기 등에 사용된다. 탐색 순서가 깊이 우선이므로, 재귀호출 시 스택의 깊이만큼 호출된다.완전 탐색에 가깝고, 모든 노드를 방문해야 할 때 적합하며, 방문 여부를 체크하는 배열(visited)이 필수이다. 1. 탐색 시작 노드를 스택에 삽입하고 방문 처리를 한다.2. 스택의 최상단 노드에 방문하지 않은 인접한 노드가 하나라도 있으면 그 노드를 스택에 넣고 방문처리한다. 방문하지 않은 인접 노드가 없..

  • format_list_bulleted 코딩테스트/개념
  • · 2025. 8. 8.
  • textsms

React에서 강좌 리뷰 버튼 활성화 처리하기: some() vs Map

SayBridge 프로젝트를 진행하면서, 강좌별로 “내가 이미 리뷰를 작성했는가?”를 확인하여 리뷰 작성 버튼을 활성화하거나 비활성화하는 기능이 필요했다. 처음에는 로직을 처리하는 부분이라 서버에서 해당 코스에 리뷰가 있는 지를 확인하여 각 코스마다 리뷰 여부를 확인 요청을 보내려했는데 그럴 경우 요청이 코스 수만큼 늘어나 데이터가 많아지면 서버 부하가 심해질 것 같았다.  기존 MyPage 로드 시 유저가 수강중인 강좌, 작성한 리뷰를 불러오는데, 이때 저장한 강좌 및 리뷰 정보를 이용하여 프론트에서 해당 기능을 구현하기로 했다.   처음에는 단순하게 .some()를 사용해 각 코스마다 리뷰를 찾는 방식으로 구현하였다.const hasReview = reviews.some(review => review..

  • format_list_bulleted 개발 일지
  • · 2025. 3. 7.
  • textsms

신규 강좌 알림 기능 - Event 기반 아키텍처 리팩토링

SayBridge 프로젝트 구현 중 신규 강좌 알림 구독 서비스 신청 시 신규 강좌가 등록되면 해당 강좌 정보를 구독한 사용자들에게 이메일로 전송해는 기능을 구현하였다.1. 기능 개요 처음 구현 시 수강생에게 메일을 보내려면 강좌를 생성하는 CourseService 안에서 메일 전송 로직을 넣으려고 하다가  “메일 전송”이라는 기능은 다른 서비스나 기능에서 응용할 수 있을 것 같다는 생각을 해서 MailService 코드를 따로 생성 하였다. MailService 코드@Servicepublic class EmailService { @Autowired private JavaMailSender mailSender; @Autowired private SubscriberRepository ..

  • format_list_bulleted 개발 일지
  • · 2025. 3. 3.
  • textsms

예외(Exceptions), Spring boot에서 예외처리 (@RestControllerAdvice + @ExceptionHandler)

예외(Exceptions)란? 개발을 하다 보면 예기치 않은 상황이 발생할 수 있다. 예를 들어, DB에 저장하고자 하는 데이터가 Null 값이거나, 네트워크 연결이 끊겨 호출이 실패하거나, 파일 입출력에 문제가 생기는 등 다양한 예외 상황이 존재한다. 예외는 프로그램의 정상적인 흐름을 깨뜨릴 수 있기 때문에, 이들을 체계적으로 처리(Handling)하는 방식이 필요하다. 종류Checked Exception: 컴파일 단계에서 체크되는 예외로, 반드시 처리해야 한다. 예를 들어, IOException, SQLException 등이 있다.Unchecked Exception(런타임 예외): 컴파일 단계에서 체크되지 않는 예외로, 개발자의 부주의로 발생하는 경우가 많다. 예를 들어, NullPointerExce..

  • format_list_bulleted 공부/Spring
  • · 2025. 2. 18.
  • textsms
  • navigate_before
  • 1
  • 2
  • 3
  • 4
  • 5
  • navigate_next
공지사항
전체 카테고리
  • 분류 전체보기 N
    • 회고
    • 정보처리기사
    • 공부
      • Spring
      • Docker
      • 오류
    • 개발 일지
    • 코딩테스트 N
      • 개념
      • 문제풀이 N
최근 글
인기 글
최근 댓글
태그
  • #SRP
  • #solid
  • #객체지향5원칙
  • #DIP
  • #객체지향원리
  • #OCP
  • #정보처리기사 필기
  • #정처기 필기
  • #정처기
  • #lsp
전체 방문자
오늘
어제
전체
Copyright © 쭈미로운 생활 All rights reserved.
Designed by JJuum

티스토리툴바