본문 바로가기

Algorithm

(12)
[백준] 1676. 팩토리얼 0의 개수 - JAVA 문제 풀이 큰 숫자의 팩토리얼 (n!) 값을 구하는 것으로 기존 int, long, double 등 사용이 불가능하다.따라서 BigInteger 를 사용해야한다.BigInteger의 특이한 점은 문자열이라는 점이다.따라서 자바 내장되어있는 함수를 사용해야한다. BigInteger big1= new BigInteger("1");BigInteger big2 = BigInteger.valueOf(2);이때 두개의 차이점은, big1은 문자열 파싱으로 생성된 것이고,big2 는 원시타입인 long값을 받아서 생성한 것이다.이를 활용하여 Type이 BigInteger 끼리 연산은 아래와 같다. 더하기 : big1.add( big2 );빼기 : big1.subtract( big2 );곱하기 : big1.mul..
[백준] 2751. 수 정렬하기2 - JAVA 문제 풀이 힙정렬 O(nlog n)힙정렬은 완전이진트리를 배열로 표현한 힙 구조를 이용해 정렬하는 알고리즘으로,아래 그림과 같이 배열을 이진트리로 나타내야한다.이진트리의 가장 중요한 개념은부모가 n 이라면왼쪽 자식은 n*2+1오른쪽 자식은 n*2+2 라는 점을 알고 시작하면 좋다. 필요한 메서드1. swap()⤷ int A 와 int B가 있다고 가정, A와 B의 값 서로 바꾸기 2. heapify()⤷ while 문을 통해서 부모 ↔ 자식 사이의 값 비교 후 더 크거나 더 작은 수 선택해서 자리 바꾸기더 이상 자식이 없거나, 기존 최대힙 or 최소힙 이라면 while문 종료 3. heapsort()⤷ 힙정렬을 위한 메서드 heapify() + swap() 을 사용우선, 최대힙으로 만들어 주기다음으로 루..
[백준] 10989. 수 정렬하기 - JAVA 문제 풀이 카운팅 사용하기만약, 입력 값으로 2,2,4,5,1,2,3 이라고 주어졌을 때,입력 값이 배열의 인덱스가 되고, 카운팅 즉 1씩 더하는 것이다.이렇게 되면 arr = { 0,1,2,1,1,1 } 이 만들어진다.그 후 for 문을 통해 해당 배열의 크기 만큼 반복을 해주며그 반복문 안에서 다시 반복문 즉, 이중 반복문을 통해 값을 출력해 낸다면,1,2,2,3,4,5 라는 출력 값이 만들어 진다. 코드 import java.util.*;import java.io.*;public class Main{ public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader( ..
[백준] 1929. 소수 구하기 - JAVA 문제 풀이 에라토스테네스의 체를 이용한 문제이다. 에라토스테네스의 체 란?고대 그리스의 수학자 에라토스테네스가 만들어 낸 소수를 찾는 방법이다.이 방법은 마치 체로 치듯 수를 걸러낸다고 하여 '에라토스테네스의 체' 라고 불린다. 방법은 임의의 자연수 n에 대해 그 이하의 소수를 모두 찾는, 가장 간단하고, 빠른 방법이다.예를들면 1~100 까지 숫자 중 소수를 찾는다 할 때, 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697..

GitHub