전체 글276 [백준] 가장 긴 증가하는 부분 수열 2 / 자바 ** 문제 레벨: G2알고리즘: 이분탐색풀이시간: 1시간힌트 참조 유무: 유https://www.acmicpc.net/problem/120151 번째 시도 [ LIS (Longest Increasing Subsequence) 란]어떤 수열에서 만들 수 있는 부분 수열 중에서 가장 길면서 오름차순을 유지하는 수열이다.LIS를 구할 때는 DP를 사용한다.LIS의 길이를 구할 때는 이분 탐색(O(nlogn))을 사용한다. DP(O(n^2))로 길이를 구할 시 시간초과가 난다[알고리즘 설명]*이 알고리즘은 고정된 사고를 달리해서 이해해야 합니다*핵심 아이디어: 길이가 동일한 증가 부분 수열 중에서 마지막 값이 작은 것을 유지합니다.지금부터 배열을 순회하면 LIS를 찾아보도록 하겠습니다.수열 A가.. 2024. 5. 29. [백준] 최단경로 / 자바 문제 레벨: G4알고리즘: 다익스트라 풀이시간: 1시간힌트 참조 유무: 유https://www.acmicpc.net/problem/17531 번째 시도 [다익스트라 알고리즘에서 우선순위 큐를 쓰는 이유]최소거리 값 갱신 횟수의 감소때문이다. 먼저 우선순위 큐를 쓰지 않고 일반 큐를 써도 결과에는 차이가 없다. 하지만 우선순위 큐를 쓰는 이유는 속도에 이점이 있기 때문이다.import java.io.*;import java.util.*;class Node implements Comparable{ int end, weight; public Node(int end, int weight){ this.end = end; this.weight = weight;.. 2024. 5. 28. 루니버스 개발시 알아야 할 개념정리 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번 4방향으로, 5*4*20*20 =8,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. 이전 1 ··· 16 17 18 19 20 21 22 ··· 31 다음