반응형

분류 전체보기 277

피로도

이 문제는 피로도 시스템( 0 이상의 정수로 표현한다.)이 있으며, 일정 피로도를 사용해서 던전을 탐험할 수 있다. 이때, 각 던전마다 탐험을 시작하기 위해 필요한 "최소 필요 피로도"와 던전 탐험을 마쳤을 때 소모되는 "소모 피로도"가 있다."최소 필요 피로도"는 해당 던전을 탐험하기 위해 가지고 있어야 하는 최소한의 피로도를 나타내며, "소모 피로도"는 던전을 탐험한 후 소모되는 피로도를 나타낸다. 예를 들어 "최소 필요 피로도"가 80, "소모 피로도"가 20인 던전을 탐험하기 위해서는 유저의 현재 남은 피로도는 80 이상 이어야 하며, 던전을 탐험한 후에는 피로도 20이 소모된다.import java.util.*;class Solution { static int answer = 0; s..

카테고리 없음 2024.09.06

java 8 예제 코드

주요 변경사항Java 8의 주요 변경 사항은 아래와 같다. Lambda expression(람다 표현식)Functional interface(함수형 인터페이스)Default method(디폴트 메서드)Stream(스트림)Optional(옵셔널)  1. Lambda expression(람다 표현식)메서드로 전달할 수 있는 Anonymous function(익명 함수)를 단순한 문법으로 표기한 것을 람다 표현식이라고 한다. 글로는 설명이 어려우니 바로 코드를 보자. Thread 객체를 생성하여 동작시키는 코드다. 위 두 코드는 동일한 결과이지만 문법만 다르게 사용했을 뿐이다. 이번에는 자세히 람다 표현식의 구성을 살펴보자.// 익명 클래스로 Runnalbe을 구현Thread thread = new Threa..

카테고리 없음 2024.08.31

서버 캐시 종류

캐시(Cache)란?캐시 메모리는 CPU 칩 안에 들어간 작고 빠른 메모리로, 이전에 요청했던 결과를 임의로 저장해둔 뒤 빠르게 서비스해주는 것을 의미한다. 원래대로라면, 프로세서가 매번 메인 메모리에 접근하여 데이터를 받아오게 된다.매번 그렇게 진행하게 된다면 계속 같은 데이터를 요청할 경우 시간이 낭비되기 때문에, 자주 사용하는 데이터의 경우 캐시에 담아두고 프로세서가 메인 메모리 대신 캐시에 접근하도록 하여 처리 속도를 높여주는 것이다. 한마디로, 백엔드를 통해서 계속해서 같은 데이터를 DB에 요청하는 것이 아니라, 읽어온 데이터를 '임의의 공간' 에 저장하여 나중에 동일한 요청이 오면 DB(또는 API)를 참조하지 않고 요청을 처리하는 기법이다. 캐시 서버(Cache Server)는 이때 위에서 ..

카테고리 없음 2024.08.31

시간 복잡도(Time Complexity), 공간 복잡도 (Space Complexity)

시간 복잡도(Time Complexity)시간 복잡도의 가장 간단한 정의는 알고리즘의 성능을 설명하는 것이다.따라서 시간 복잡도는 프로세스가 수행해야하는 연산을 수치화한 것이라고 볼 수 있다.컴퓨터 성능에 따라 실행시간은 달라질 수 있으므로, 실제 실행 시간보다는 명령문의 실행 빈도수를 계산하여 실행 시간을 구한다.시간 복잡도는 주로 Big-O 표기법을 사용하여 나타낸다.Big-O 표기법은 '입력값의 변화에 따라 연산을 실행할 때, 연산 횟수에 비해 시간이 얼마만큼 걸리는가?'를 표기하는 방법이다.  공간 복잡도 (Space Complexity)공간 복잡도란 프로그램 실행과 완료에 얼마나 많은 공간(메모리)가 필요한지를 나타낸다.알고리즘을 실행시키기 위해 필요한 공간(space)는 두 가지로 나눌 수 있..

카테고리 없음 2024.08.31

깊이/너비 우선 탐색(DFS/BFS) - 여행경로

이 문제는 ICN 공항부터 시작하여 모든 티켓을 사용해 모든 공항을 방문하는 방법을 찾는 문제이다. 단 방문하는 경로가 여러개 생길 경우, 시작 공항을 제외하고 알파벳이 빠른 공항 순서대로 방문하도록 하여야 한다. 그렇다면 DFS 와 BFS 둘 중 어떤게 좋을지 생각을 해야한다. 위에서 말한거 처럼 방문 경로가 여러 개 일경우 시작 공항을 제외하고 알파벳이 빠른 공항 순서대로 해야하기 때문에 Stack 인 DFS가 가장 좋을 꺼 같다.import java.util.*;public class Solution { public String[] solution(String[][] tickets) { // 그래프 생성 Map> graph = new HashMap(); f..

카테고리 없음 2024.08.28

깊이/너비 우선 탐색(DFS/BFS) - 단어 변환

이 문제는 BFS(너비 우선 탐색)를 이용하여 단어 변환를 풀어야한다. BFS는 Queue 방식으로 최단 경로를 찾는데 적합한 알고리즘이다. 이 문제는 '가장 짧은 변환 과정'을 찾는 데 좋기 때문이다. 주어진 단어들을 그래프의 노드로 생각하고, 한 번에 한 개의 알파벳만 바꿀 수 있는 변환이 필요하다. mport java.util.*;class Solution { public int solution(String begin, String target, String[] words) { // 변환 가능한 단어를 저장할 리스트 List wordList = Arrays.asList(words); // BFS 탐색을 위한 큐와 방문 배열 Que..

카테고리 없음 2024.08.23

DFS, BFS 의 개념

DFS(Depth-First Search) 와 BFS(Breadth-First Search)는 그래프나 트리에서 노드를 탐색하는 두 가지 주요 알고리즘이다. 각각의 방식에는 특성이 있다. DFS(Depth-First Search, 깊이 우선 탐색)DFS는 스택을 사용한다. 스택을 사용하지 않고 재귀로도 구현이 가능하다. 재귀가 스택의 자료구조 원리를 사용하기 때문에 가능한 것이다. 트리 순회(전위순회, 중위순회, 후위순회, 루트노드)의 위치에 따라 이름이 붙여진다. package study.blog.codingnojam;import java.util.Stack;public class Study_DFS_stack { // 방문처리에 사용 할 배열선언 static boolean[] vistied = new ..

카테고리 없음 2024.08.23

깊이/너비 우선 탐색(DFS/BFS)- 네트워크

이 문제는 각 컴퓨터를 그래프의 노드로 보고, 연결된 컴퓨터 사이에 엣지를 둔다면, 네트워크의 개수를 찾는 것은 그래프에서 연결된 컴포넌트의 수를 세는 것과 같다. 그래서 이 문제는 DFS(깊이 우선 탐색)에 알아야 한다.class Solution { public int solution(int n, int[][] computers) { boolean[] visited = new boolean[n]; int networkCount = 0; for (int i = 0; i  문제 풀이1. visited 배열을 사용하여 각 컴퓨터의 방문 여부를 알아야한다.2. 모든 컴퓨터를 순회하면서 방문하지 않은 컴퓨터를 발견할 때마다 DFS를 호출하여 해당 네트워크를 완전 탐색한..

카테고리 없음 2024.08.23

탐욕법 - 구명보트

이 문제는 주어진 사람들을 구명보트의 무게 제한에 맞게 최대한 효율적으로 태워야 하는 문제이다. 두 명의 사람을 한 보트에 최대한 태우도록 하면서도 보트의 수를 최소화해야한다.  import java.util.*;class Solution { public int solution(int[] people, int limit) { int answer = 0; Arrays.sort(people); int i = 0; for (int j=people.length - 1; i 문제 풀이1. 먼저 사람들의 몸무게를 정렬 해준다.2. 양 끝에서 시작 하여 가장 가벼운 사람을 왼쪽 끝과 가장 무거운 사람을 오른쪽 으로 설정해야한다. i ..

카테고리 없음 2024.08.17

Latency, RPS, TPS 이란?

Latency 는 하나의 데이터 패킷이 출발지에서 도착지까지 가는데 걸리는 시간을 뜻한다. 성능 최적화에 있어서 대기 시간의 원인을 줄이는 것과 연결 상태가 좋지 않은 사용자를 고려하여 대기 시간이 긴 환경에서 사이트 성능을 테스트하는 것은 중요하다.  Requests Per Second(RPS) 는 시스템이 초당 처리할 수 있는 요청의 수를 나타낸다. 이는 부하테스트에서 시스템의 처리 능력을 측정하는 데 사용되며, HTTP 요청과 같은 단순한 통신을 참좋한다. Tansactions Per sSecond(TPS) 는 시스템이 초당 처리할 수 있는 거래의 수를 나타낸다. 거래는 단순한 요청보다 복잡하여, 일반적으로 여러 단계의 처리와 데이터의 변화를 포함한다. 예를 들어, 데이터베이스에서 데이터를 조회하고..

카테고리 없음 2024.08.14
반응형