[SQL] 1장 DML
·
Database
[IT ISSUE] 카탄 주사위 조작해서 확률 바꿔보기~!
·
IT ISSUE
카탄?여러분 보드게임 좋아하시나요??? 저는 보드게임을 진짜 좋아하는데요! 그중에 카탄(CATAN) 이란 보드게임이 있는데요카탄 중에서 자원을 받기 위해 주사위 2개를 굴립니다. 주사위 2개를 합친 값에 자신의 마을이나 도시가 있다면 해당 자원을 은행에서 받습니다.카탄 보드게임에 보면 이렇게 어떤 값이 많이 나오는지 나와있는데요6 같은 경우 (1 + 5 / 2+4 / 3+3 / 4+2/ 5+1) 로 5개로 제일 많이 나오는 값이라 빨간색으로 칠해져 있습니다!! 그래서 확률 분포표를 보면 7일때 가장 높고 옆으로 넘어갈 수록 확률이 낮아지는 것을 볼 수 있습니다! 이걸 자바로 구현해봤는데 import java.util.*;public class Main { static Random rand = n..
[java] 무한대의 수를 계산하고 싶다면??
·
알고리즘
자바에서 long의 범위를 넘어가는 수를 계산해야하는 값이 생기면 어떻게 해야할까???✅ Java 기본 자료형의 범위int4바이트약 ±21억long8바이트약 ±900경float4바이트약 7자리double8바이트약 15자리BigInteger가변무한 정수BigDecimal가변무한 실수 자바에서는 String값으로 계산을 할 수 있는 BigInteger와 BigDecimal을 제공하여 준다. 🔢 BigInteger: 무한 정수 연산선언사칙연산 (모두 BigInteger 타입끼리 연산)import java.math.BigInteger; BigInteger num = new BigInteger("12345678901234567890");num.add(other); // + num.subtract(other);..
[백준 1874] 스택 수열 - 자바(java)
·
알고리즘
https://www.acmicpc.net/problem/1874 문제 이해이번 문제는 이해하는데 오랜 시간이 걸렸다. 내가 이해한 바로는 첫번째 줄에 n을 받는다. 1부터 ~ n 까지 스택을 넣는다고 가정할 시에 입력한 순열이 나오도록 하는 push와 pop을 계산해라! 1부터 n까지에 수에 대해 차례로 [push, push, push, push, pop, pop, push, push, pop, push, push, pop, pop, pop, pop, pop] 연산을 수행하면 수열 [4, 3, 6, 8, 7, 5, 2, 1]을 얻을 수 있다.알고리즘그래서 일단 지금 현재 stack에 넣어야 하는 값(1부터 시작) 과 stack에 맨 첫번째에 있는 값을 비교한다.만약 같다면 pop하고stringbui..
[백준 11658] 구간 합 구하기 4 - 자바(java)
·
알고리즘
https://www.acmicpc.net/problem/11659 문제 이해N개의 수가 주어졌을 때 i부터 j번째 수까지 합을 구하는 프로그램을 작성하라 알고리즘맨처음에는 답이 들어올때마다 구하려고 했는데 시간 초과가 떠서 찾아보니 누적합이라는 알고리즘이 있어 이 알고리즘을 사용해서 구했다. 누적합이렇게 arr보다 하나 길게 만들어서 그 값을 더한 후에 새로운 arr에 저장한다. 이렇게 하면 원래 O(N^2) 이 걸렸던 브루트 포스 알고리즘에서 그냥 자신의 값만 구하면 되는 O(1)알고리즘으로 풀 수 있게 변화하게 된다. 정답 코드import java.io.*;import java.util.*;public class Main { public static void main(String[] args)..
[백준 11727] 2xn 타일링 2 - 자바(java)
·
알고리즘
문제 이해 1. x번과 y번 카드를 골라 그 두장에 쓰여진 수를 더한 값을 계산한다.2. x번 y번 카드를 더한 값으로 교체한다. 원하는 것 : 최소의 값이 나오도록 만들어라 알고리즘지금 x번과 y번으로 문제를 살짝 꼬았지만, 생각해보면 전체 값중에서 최솟값을 만들고 싶다면 최솟값 2개 x와 y를 뽑고 더해서 그 값을 바꿔주면 되겠다라고 생각하여우선순위 큐로 문제를 풀있다고 생각했다. 코드 import java.util.*;import java.io.*;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputSt..
[백준 11727] 2xn 타일링 2 - 자바(java)
·
알고리즘
문제 이해2 * n 으로 이루어 져 있을 때 1. 1 x 22. 2 x 1 3. 2 x 2이 세개로 채울 수 있는 프로그램을 작성해라 알고리즘대표적인 DP문제라고 생각해서 바로 DP로 풀었는데 2 * 3을 세분화 해서 나누면 2 * 1 과 2 * 2 로 나눌수 있어서 dp문제로 풀 수 있다 문제 풀이이제 dp라고 확정 지었으면 점화식을 풀어야 한다. 3일 경우를 봤을 때 2*1인 사각형을 하나 채우면 2*2일 때 값이 남으니 일단 그 전에 값을 더하고 잘 보면 2*3일때 보면 2*2를 두 개로 표현이 가능해 2*1을 두번 더하면 2*3이 나온다. 이를 확인하기 위해 2*4를 적용 시켜 보면2*1 과 2*3 으로 이루어진 값 하나2*2가 2*1인 값은 위에서 한값과 겹치니 제외 하고 보면 1*2 2개..
[백준 4963] 섬의 개수 - 자바(java)
·
알고리즘
문제 이해가로 세로 대각선으로 움직일 수 있으면 섬이고 못움직이면 섬이 아니다.BFS를 통해 모든 점을 탐색하면서 방문하지 않은 새로운 섬을 만나면 count를 하나씩 늘려주도록 하면 될 것 같다. 코드staticstatic int[] dx = {-1, 1, 0, 0, 1, 1, -1, -1};static int[] dy = {0, 0, -1, 1, -1, 1, -1, 1};static int[][] graph;static boolean[][] visit;static int x, y;dx, dy를 만들어 가로 세로 뿐만 아니라 대각선 까지 갈 수 있도록 만들어주고,static으로 graph와 visit 그리고 가로 세로인 x y까지 설정해준다. 입력BufferedReader br = new Buffere..