본문 바로가기

전체 글223

[Java] 실수형의 정밀도, 고정소수점과 부동소수점 실수형의 정밀도 float은 4byte로 이루어져있고, 4byte의 정수로는 '약 ±2x10^9'의 값 밖에 표현할 수 없었는데, 어떻게 3.4 x 10^38 과 같은 큰 값을 표현할 수 있는가? 그 이유는 실수는 값을 저장하는 방식이 다르다. 정수형 int : 1 + 31 = 32(4byte) S(1) 31 bit 실수형 float : 1 + 8 + 23 = 32(4byte) S(1) E(8) M(23) 정수형은 부호와 값으로 이루어져있지만, 실수형은 '부호(S), 지수(E), 가수(M)' 세 부분으로 이루어져 있다. 즉, '2의 제곱을 곱한 형태로 저장하기 때문에 이렇게 큰 범위의 값을 저장하는 것이 가능하다. 그러나 정수형과 달리 실수형은 오차가 발생할 수 있다는 단점이 있다. 그래서 실수형에는 표.. 2022. 2. 27.
[알고리즘 문제풀이] 프로그래머스 - 2개 이하로 다른 비트 / JAVA(자바) https://programmers.co.kr/learn/courses/30/lessons/77885 코딩테스트 연습 - 2개 이하로 다른 비트 programmers.co.kr /** 1. f(x) 는 x보다 큰 수 중 비트가 1~2개사이에서 다른 것 중 제일 작은 수 2. 현재 수의 비트 중에서 제일 작은 꺼져있는 비트 찾기 2-1) 전체 켜진 비트와 현재 비트를 xor연산 비트 만들고, 2-2) 만들어진 비트 중 가장 최소로 켜진 비트를 찾으면 그게 제일 작은 꺼져잇는 비트 3. 꺼져있는 비트를 키고, 이게 최소비트가 아니면 오른쪽꺼는 끈다. 3-1) 꺼져있는 비트를 키는건, 찾은 비트를 합집합하면 됨. 3-2) 바로 오른쪽꺼를 끄는건 2진수니까 /2로 하면 바로 한칸 옆 오른쪽임. ~를 통해 해당 .. 2022. 2. 27.
[알고리즘 문제풀이] 백준 10845 큐 (JAVA코드) https://www.acmicpc.net/problem/10845 10845번: 큐 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net /** * 1. 디큐 구현풀이 * * 2. n개의 명령의 수에 따라 수행 * * 3. 출력 명령문 마다 출력 * */ import java.io.*; import java.util.*; public class Test { public static void main(String[] args) throws IOException{ BufferedReader br = new Buffere.. 2022. 2. 27.
[알고리즘 문제풀이] 백준 9012 괄호 (JAVA코드) https://www.acmicpc.net/problem/9012 9012번: 괄호 괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고 www.acmicpc.net /** * 1. 올바른 괄호열 찾기 * * 2. stack을 통한 구현 * * 3. t개의 테스트 데이터를 올바른 괄호열인지 "YES", "NO" 반환 * */ import java.io.*; import java.util.Stack; import java.util.StringTokenizer; public class Test { public static void m.. 2022. 2. 27.
[알고리즘 문제풀이] 백준 10828 스택 (JAVA코드) https://www.acmicpc.net/problem/10828 10828번: 스택 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net /** * 1. n개의 명령의 수가 들어오고, * * 2. stack을 구현하여 명령을 처리 * * 3. pop이나 size나 empty, top은 해당하는 숫자를 출력 * */ import java.io.*; import java.util.Stack; import java.util.StringTokenizer; public class Test { public static voi.. 2022. 2. 27.
[Java]음수의 2진 표현 - 2의 보수 컴퓨터에서의 음수 표현 컴퓨터는 2진수, 비트 단위가 최소단위로 값을 표현할 수 있는데 n 비트라고하면 표현할 수 있는 값의 개수는 2^n개이다. 만약 4비트의 2진수로 양수와 음수를 모두 표현한다고하면 어떻게 할까? 1) 절반씩 양수와 음수로 사용하여 순서대로 증가(부호 절대값 방식) # 2진수 부호있는 10진수 1 0000 0 2 0001 1 3 0010 2 4 0011 3 5 0100 4 6 0101 5 7 0110 6 8 0111 7 9 1000 -0 10 1001 -1 11 1010 -2 12 1011 -3 13 1100 -4 14 1101 -5 15 1110 -6 16 1111 -7 음수를 이렇게 배치하게 되면, 첫번째 비트만 1로 바꾸면 음수가 된다는 장점이 있다. 하지만, 두 수를 더했을 .. 2022. 2. 27.