본문 바로가기

전체 글

(335)
SonarLint 가이드 SonarLint란?IntelliJ에 설치하는 정적 코드 분석 플러그인 (SonarQube for IDE).코드를 작성하는 즉시 버그, 보안 취약점, 코드 품질 문제를 실시간으로 감지한다.별도 서버 없이 로컬에서 동작하며, SonarCloud와 Connected Mode로 연동하면 서버 룰셋까지 동기화된다.UI 구성탭/버튼설명Findings현재 파일의 분석 결과 목록Log분석 실행 로그No Issues일반 코드 품질 이슈Security Hotspots보안 취약 가능성 있는 코드Taint Vulnerabilities외부 입력 기반 보안 취약점Dependency Risks의존성 라이브러리 취약점Rule (우측 패널)선택한 이슈의 룰 설명Locations이슈 발생 위치 상세하단 상태바:Automatic ana..
[Python] 백준 1874 스택 수열 문제https://www.acmicpc.net/problem/1874n : 1~n까지의 수를 스택에 넣었다 빼면서n 이후부터 주어지는 n개의 수로 이루어진 수열을 만들 수 있는가ex) 1~8까지의 수를 순차적으로 stack에 넣고 빼면서 수열 4, 3, 6, 8, 7, 5, 2, 1 을 만들 수 있는가 풀이 코드import sysinput = sys.stdin.readlinen = int(input())nums = []# 수열for _ in range(n) : nums.append(int(input()))stack = []ans = []for num in range(1, n+1) : # 우선 stack에 넣기 stack.append(num) ans.append('+') whil..
[Python] 백준 11659 구간 합 구하기 4 문제 풀이 코드import sysinput = sys.stdin.readlinen, m = map(int, input().split())arr = list(map(int, input().split()))dp = [0] * (n+1)dp[1] = arr[0]if n > 1 : for i in range(1, n) : # O(N) dp[i+1] = dp[i] + arr[i]for _ in range(m) : # O(m) i, j = map(int, input().split()) print(dp[j] - dp[i-1]) 접근법배열은 한 번 주어지고, 각 구간의 합을 반복문을 쓰지 않고 어떻게 구할 수 있을까?반복문을 쓰지 않으려는 이유는 이미 m번 반복하기 때문에 (1 구간의 합을..
[WebSocket + Redis] 실시간 채팅 서버 구현하기 0. 개요WebSocket 프로토콜과 Redis를 이용한 채팅 서버 구현https://github.com/Leesowon/redis-spring-study GitHub - Leesowon/redis-spring-study: redis caching, chat application with websocket studyredis caching, chat application with websocket study - Leesowon/redis-spring-studygithub.com 1. 기술 선정(1) WebSocketQ1. 왜 통신 프로토콜이 필요한가?일반적인 웹 통신 프로토콜인 HTTP는 클라이언트가 요청을 보내야한 서버가 응답하는 '요청-응답(Request-Response)' 방식이다.채팅 서비스에서..
[디자인 패턴] 전략 패턴 (Strategy Pattern) 전략 패턴 (Stragegy Pattern)직접 행위를 수정하지 않고 전략을 바꿔주기만 함으로써 행위를 유연하게 확장하는 방법을 의미실행(런타임) 중에 알고리즘 전략을 선택하여 객체 동작을 실시간으로 바뀌도록 하는 것동일한 문제를 해결하는 여러 방법이 있을 때, 이들 방법을 각각의 클래스(전략)로 캡슐화하고, 실행 시점에 필요에 따라 전략을 바꿀 수 있도록 한다.전략이란 일종의 알고리즘이 될 수도 있으며, 기능이나 동작이 될 수도 있는 특정한 목표를 수행하기 위한 행동 계획을 의미 왜 사용할까?ex. 기차(Train)와 버스(Bus) 클래스가 있고, 이 두 클래스는 Movable 인터페이스를 구현했다고 가정그리고 기차와 버스 객체를 사용하는 Client도 있다.위 구조를 코드로 다음과 같이 표현할 수 있..
[알고리즘] 검색 알고리즘 - 이진 탐색(Binary Search) 이진 탐색 이란, 정렬된 리스트에서 특정 값(Target)을 찾기 위해, 리스트의 중간값(Mid)과 Target을 비교하여 검색 범위를 절반씩 줄여나가는 탐색 알고리즘 📚 1. 이진 탐색(Binary Search)이란?탐색 기법 중 하나로, 원하는 탐색 범위를 두 부분으로 분할해서 낮는 방식⚠️ 탐색 범위는 반드시 정렬되어 있어야 한다.전체 탐색에 비해 속도가 빠르다. ⚙️ 2. 이진 탐색 동작 방식범위 설정: 탐색할 범위의 시작(Low)과 끝(High) 인덱스를 정한다. (처음엔 리스트 전체)중간값 계산: 중간(Mid) = (시작 + 끝) // 2 로 중간 인덱스를 찾는다.비교 (3-Way):Case 1. 찾는 값 == 중간값 (찾음)탐색을 성공적으로 종료Case 2. 찾는 값 찾는 값이 중간값보다 ..
[OS] 캐시 메모리 (Cache Memory) 1. 캐시 란?CPU와 RAM 간의 데이터 전송 속도를 높이기 위해 사용되는 중앙 처리 장치(CPU)와 주 기억장치(RAM) 사이에 위치한 고속 기억 장치캐시 메모리는 속도가 빠른 장치(CPU)와 느린 장치(RAM) 간의 속도 차이로 발생하는 병목현상을 완화하여 성능을 향상하는 데 중요한 역할을 한다.주 기억장치에 비해 접근이 빠르지만, 용량이 작다는 특징캐시 메모리는 CPU가 처리할 떼이터나 명령어를 저장 → CPU가 필요할 때 빠르게 엑세스할 수 있게 해준다.일반적으로 계층 구조를 가진 캐시 메모리를 사용한다.CPU와의 거리에 따라 L1 캐시, L2 캐시, L3 캐시 등 여러 단계로 나뉜다.숫자가 작을 수록 CPU에 가까운 상위 레벨 캐시로 용량이 작고 빠르며, 숫자가 클수록 CPU에서 멀어지며 용량..
[C++] 코딩테스트 준비 STL(표준 라이브러리)알고리즘 푸는데 자주 쓰이는 것은 pair, vector, queue, stack, set, map, priority queue 정도 Pair두 가지 자료형을 하나의 쌍으로 묶을 수 있게 해준다.첫 번째 데이터는 first, 두 번째 데이터는 second로 접근한다. p = make_pair(f,s)로 한 번에 대입하는 것도 가능하다.#include #include #include using namespace std;int main(int argc, const char * argv[]) { pair p; scanf("%d %c", &p.first, &p.second); printf("%d %c\n", p.first, p.second); p.first = 1; ..