본문 바로가기

분류 전체보기145

루니버스 개발시 알아야 할 개념정리 1. 사전 단어 정의  Contract ResourceContract Resource는솔리디티 코드(Solidity Code)를 컴파일 했을 때 나오는 ABI와 Bytecode를 칭하는 용어입니다.솔리디티( Solidity )솔리디티는 이더리움 등 블록체인 플랫폼에서 스마트 계약 작성과 구현에 사용되는 계약 지향 프로그래밍 언어이다. 솔리디티는 이더리움 핵심 기여자들에 의해 이더리움과 같은 블록체인 플랫폼상에 스마트 계약을 작성할  수 있도록 개발되었다.    2. 스마트 컨트랙트 작동원리   솔리디티 언어로 프로그래밍된 스마트 컨트랙트는 컴파일러(solc)에 의해 바이트코드(bytecode)로 컴파일되고, 컴파일된 바이트코드는 블록에 포함되어, 이더리움 가상머신(EVM)에 의해 실행된다. 스마트컨트랙트.. 2024. 5. 28.
[백준] 파티 / 자바 문제         레벨: G3알고리즘: BFS풀이시간: 1시간힌트 참조 유무: 유https://www.acmicpc.net/problem/1238 1 번째 시도: 실패   가중치가 있기 때문에 인접리스트 대신 인접행렬 선택갈 때 최단 거리를 구하는 dfs와 돌아올 때 최단 거리를 구하는 dfs2왜 굳이 dfs를 두개로 나누었나? 현 코드 dfs 리턴 값은 void로 답을 전역변수에 할당했다.효율적인건 리턴 값을 int로 하여 전역변수를 사용하지 않는 거다그러나 구현에 어려움이 있어 답을 전역변수에 할당하고 dfs를 2개로 나뉘었다.import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import .. 2024. 5. 27.
[백준] 아기상어 / 자바 문제         레벨: G3알고리즘: 풀이시간: 12:34힌트 참조 유무:https://www.acmicpc.net/problem/162361 번째 시도: 실패   [알고리즘 선택 사고 과정]먹을 수 있는 것들을 다 먹어야 함(배열 탐색)먹을 수 있는 것에서 갈 때에는 최소한의 거리로 가야 함 -> BFS 선택되게 간단히 알고리즘 선택했다 [풀이 과정]반복문상어가 먹을 수 있는 것을 찾을 때까지 탐색(BFS)한다.만약 먹을 것이 없다면 반복문을 종료하고 답을 반환한다.자세한 건 주석 참조  import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.ArrayDeque;i.. 2024. 5. 25.
[백준] 줄 세우기 / 자바 문제         레벨: G3알고리즘: 위상정렬 + 풀이시간:  1시간 힌트 참조 유무: 유https://www.acmicpc.net/problem/22521 번째 시도   가장 단순하게 구현을 하면 학생수만큼의 길이를 가진 배열을 만들고 문제에서 조건이 주어질 때마다 배열의 원소들의 위치를 바꿔주면 됩니다. 그러나 이렇게 하면 시간 복잡도에서 당연히 초과 판정을 받게 될 겁니다. 그렇기 때문에 알고리즘을 써야 하고 이때 사용할 수 있는 알고리즘은 위상 정렬(Topological Sort)이 있습니다. 위상 정렬(Topological Sort)은 그래프에서 선후관계 조건이 있을 때 이를 고려해서 노드의 순서를 정렬할 수 있습니다. (위상정렬은 순환그래프가 포함될 시 사용하지 못한다.) import ja.. 2024. 5. 24.
HashMap 동작원리 HashMap은 Key와 Value가 짝 지어진 자료구조입니다. HashMap 동작원리HashMap은 key의 HashCode을 이용해서 시간복잡도 O(1)으로 value를 찾아낸다. HashCode를 인덱스로 삼는 배열 자료구조이다. 실제 계산은 HashCod % size 이다.나머지 연산을 하는 이유는 배열의 인덱스 중 하나로 매핑시키기 위함이다.특정 값에 대한 해시값  만약 3288449라는 값을 배열의 인덱스로 사용한다면 최소 3288449 크기의 배열을 생성해야한다. 메모리를 많이 차지할것이다. 때문에 이 값을 배열의 Size로 나눈 나머지를 구하고 이를 Index로 사용하는 것이다. 만약 HashMap 내부 배열 Size가 10이라면 3288449 % 10 = 9. 즉 9라는 인덱스를 갖게 된.. 2024. 5. 23.
[백준] 2048(Easy) / 자바(feat 브루트 포스, 백트래킹, DFS 차이점) 문제         레벨: G2알고리즘: 브루트 포스풀이시간:  1시간힌트 참조 유무: 유https://www.acmicpc.net/problem/121001 번째 시도   [사고 과정]이 게임의 규칙을 못 찾겠다.최대 N= 20 최대 탐색횟수 5번,  20*20*5 =2,000이므로 완전탐색이 가능할 것 같다.5번의 완전탐색으로 구현 자! 그렇다면 어느 것을 기준으로 탐색해야 할까?각각의 숫자들을 타겟 or 방향각각의 숫자들을 초점에 맞추어 방향을 바꾸어 본다면 다른 숫자들도 영향을 받기 때문에 머리가 너무 아프다당연히 4가지로만 나누어진 방향에 초점을 맞추는 게 맞다!(이번 기회를 통해 어는 것의 초점을 맞추어 탐색할지 중요할 것을 알았다) [구현 할 때 힘든 점]스크롤한 후 배열의 결과를 구현하기가.. 2024. 5. 23.
[백준] 별 찍기 -10 / 자바 문제         레벨: G5알고리즘: 풀이시간: 1시간힌트 참조 유무: 무https://www.acmicpc.net/problem/24471 번째 시도   [풀이 사고 과정]처음 주어진 패턴으로 부분요소들을 크게 업데이트 해가는 문제구나 라는 생각즉, 재귀함수 문제라 생각풀이는 코드 주석 참조import java.io.BufferedReader;import java.io.InputStreamReader;public class Main { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); .. 2024. 5. 23.
웹 브라우저 통신 방법(Polling, Long Polling, SSE, Socket) Polling일정 주기를 가지고 서버의 API를 호출하는 방법이다. 예를 들어, 클라이언트에서 5초마다 한 번씩 알림 목록을 호출한다면, 업데이트 내역이 5초마다 갱신되며 변경사항을 적용할 수 있다. 이 방식은 기본적인 HTTP통신을 기반으로 하기 때문에 호환성이 좋다는 장점이 있다.당연하지만 업데이트 주기가 길다면 실시간으로 데이터가 갱신되지 않는다.업데이트 주기가 짧다면 갱신 사항이 없음에도 서버에 요청이 들어와 불 필요한 서버 부하가 생긴다. Long-Polling롱 폴링은 일반 폴링보다 더 나은 방식이다.Polling과 비슷하나, Client의 요청에 대해서 서버가 일정시간 동안 기다렸다가 서버 이벤트가 생기면 서버가 응답하고 Client가 곧바로 request를 보내는 방식이다.서버가 요청을 받.. 2024. 5. 21.
[백준] 치킨배달/ 자바** 문제         레벨: G5알고리즘: DFS+조합 풀이시간: 1시간 힌트 참조 유무: 유https://www.acmicpc.net/problem/15686 1 번째 시도   여느 BFS 문제랑 같다 생각하고 작성하였다import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.HashSet;import java.util.LinkedList;import java.util.Queue;import java.util.Set;//String[] s = br.readLine().split(" ");//Integer.parseInt(br.readLine());//int N = Inte.. 2024. 5. 21.