백준 / 11286번 / 절댓값 힙 / python 파이썬
·
코딩테스트/백준 (python)
문제 : https://www.acmicpc.net/problem/11286   문제절댓값 힙은 다음과 같은 연산을 지원하는 자료구조이다.배열에 정수 x (x ≠ 0)를 넣는다.배열에서 절댓값이 가장 작은 값을 출력하고, 그 값을 배열에서 제거한다. 절댓값이 가장 작은 값이 여러개일 때는, 가장 작은 수를 출력하고, 그 값을 배열에서 제거한다.프로그램은 처음에 비어있는 배열에서 시작하게 된다.입력첫째 줄에 연산의 개수 N(1≤N≤100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 0이 아니라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0이라면 배열에서 절댓값이 가장 작은 값을 출력하고 그 값을 배열에서 제거하는 경우이다. 입력되는 정수는..
[Spring] 개방-폐쇄 원칙 (OCP, Open Closed Principle)
·
개발 | 프로젝트/Java | Spring
* "김영한님의 코드로 배우는 스프링 부터, 웹 MVC, DB 접근 기술" 강의를 듣고 배운 점을 기록한 글입니다.  실습 중 기존 MemoryMemberRepository에서 JdbcMemberRepository로 교체하여 JDBC 기반의 데이터 저장소를 사용하도록 변경하였다. MemberRepository라는 추상화된 인터페이스를 사용해 확장 가능하도록 설계되었다. MemberRepository 인터페이스를 사용하여 의존성을 관리했기 때문에, 기존 코드(MemberService)를 수정하지 않고도 데이터 저장 방식을 변경할 수 있다. 소프트웨어 공학 시간에 배운 OCP를 준수하여 실제로 코드 구현까지 해보니 인터페이스를 활용한 설계의 중요성을 직접 체감할 수 있었다. +) 스프링의 DI를 활용하면 더..
Programmers / [PCCP 기출문제] 2번 / 석유 시추 / python
·
코딩테스트/programmers (python)
문제 : https://school.programmers.co.kr/learn/courses/30/lessons/250136  나의 풀이from collections import dequedef solution(land): n, m = len(land), len(land[0]) visited = [[False] * m for _ in range(n)] col_oil = [0] * m def bfs(a, b): dx = [-1, 1, 0, 0] dy = [0, 0, -1, 1] queue = deque([(a, b)]) visited[a][b] = True size = 0 colu..
[Spring] MVC 동작 구조
·
개발 | 프로젝트
Spring MVC 패턴은 웹 애플리케이션의 구조를 Model-View-Controller (모델-뷰-컨트롤러) 방식으로 나누어 개발하는 아키텍처 패턴이다. 각 구성 요소는 애플리케이션의 서로 다른 역할을 맡고 있으며, 이를 통해 코드의 유지보수성과 확장성을 높인다.  1. Model (모델)Spring MVC 기반의 웹 애플리케이션이 클라이언트의 요청을 전달받으면 요청 사항을 처리하기 위한 작업을 한다.데이터 객체: 보통 POJO (Plain Old Java Object) 클래스로 구현되어 데이터를 저장한다.비즈니스 로직: 데이터의 유효성 검사, 계산, 서비스 로직 등을 포함한다.데이터베이스 상호작용: JPA, Hibernate, MyBatis 등을 이용해 데이터베이스와 상호작용하며 데이터를 가져오거나..
Programmers / [PCCP 모의고사 1회] 3번 / 붕대 감기 / python
·
코딩테스트/programmers (python)
문제 : https://school.programmers.co.kr/learn/courses/30/lessons/250137?language=python3 나의 풀이def attack(health, damage, max_health): health -= damage if health   + 함수 하나로 표현한 더 간단한 풀이def solution(bandage, health, attacks): max_health = health count = 0 attack_count = 0 time = 1 while time
Programmers / [PCCP 모의고사 1회] 3번 / 유전법칙 / python
·
코딩테스트/programmers (python)
문제: https://school.programmers.co.kr/learn/courses/15008/lessons/121685 풀이def solution(queries): def find(n, p): if n == 1: return "Rr" parent = find(n-1, (p-1)//4+1) idx = (p-1) % 4 if parent == "RR": return "RR" elif parent == "rr": return "rr" else: return ["RR", "Rr", "Rr", "rr"][idx] return [find(n, ..
Node.js, Unity WebSocket 통신 (+ 에러 해결)
·
개발 | 프로젝트
VR 영어 교육 프로젝트에서 HTTP Polling 방식으로 데이터 처리를 했었는데, 사용자의 입력 이후 응답과 피드백 데이터가 돌아오는데까지 대략 5,6초 정도가 걸리는 문제가 있었다.  이러한 문제를 개선하기 위해 WebSocket 방식으로 수정하기로 하였고, 기존의 파이썬 서버에서 Node.js로 수정하고 Unity 클라이언트를 연결하였다. (WebSocket을 사용하기 위해 비동기 처리에 효율적이며 웹소켓과 호환이 잘 되는 Node.js로 수정)  하지만 클라이언트에서 보낸 문자열 데이터를 서버의 Chat GPT API의 입력 데이터로 보내는 과정에서 에러가 발생하였다. 내용은 message 배열에서 content 필드의 타입이 잘못되었다는 오류였다. message[1].content가 문자열 또..
백준 / 1717번 / 집합의 표현 / python 파이썬
·
코딩테스트/백준 (python)
문제 :  https://www.acmicpc.net/problem/1717 예제 입력 1 7 80 1 31 1 70 7 61 7 10 3 70 4 20 1 11 1 1예제 출력 1 NONOYES나의 풀이n, m = map(int, input().split())parent = [i for i in range(n+1)]def find(a): if parent[a] == a: return a parent[a] = find(parent[a]) return parent[a]def union(a,b): a, b = find(a), find(b) if a == b: return parent[a] = bdef check(a,b): if parent[a] == pare..