본문 바로가기

전체 글376

[백준] 2475번 : 검증수 – JAVA [자바] https://www.acmicpc.net/problem/2475 2475번: 검증수 컴퓨터를 제조하는 회사인 KOI 전자에서는 제조하는 컴퓨터마다 6자리의 고유번호를 매긴다. 고유번호의 처음 5자리에는 00000부터 99999까지의 수 중 하나가 주어지며 6번째 자리에는 검증수가 들 www.acmicpc.net 문제 문제 풀이 백준 2475번 검증수는 브론즈 5 난이도의 수학 및 구현 문제이다. 이 문제에서는 5개의 수가 연속으로 주어지고 이 모든 수의 제곱된 값의 합을 10으로 나눈 나머지 값을 출력하면 된다. 이 문제는 되게 간단하다. StringTokenizer를 이용해서 5개의 수를 입력받고 total이라는 int형 변수에 제곱된 값을 더한다. 그리고 마지막에 10으로 나눈 나머지 값을 출력하면.. 2022. 7. 31.
[백준] 4153번 : 직각삼각형 – JAVA [자바] https://www.acmicpc.net/problem/4153 4153번: 직각삼각형 입력은 여러개의 테스트케이스로 주어지며 마지막줄에는 0 0 0이 입력된다. 각 테스트케이스는 모두 30,000보다 작은 양의 정수로 주어지며, 각 입력은 변의 길이를 의미한다. www.acmicpc.net 문제 문제 풀이 백준 4153번 직각삼각형은 브론즈 3 난이도의 수학 문제이다. 이 문제에서는 한 삼각형의 세 개의 변의 길이가 주어지고 그 삼각형이 직각삼각형인지 아닌지를 출력하면 된다. 직각삼각형이면 right을 출력하고 아니면 wrong을 출력하면 된다. 이 문제는 피타고라스의 정리를 이용해서 풀 수가 있다. 직각삼각형의 변 a, b, c가 있다고 하고 c가 가장 큰 변일 때 a² + b² = c²이다. 이 .. 2022. 7. 31.
[백준] 11653번 : 소인수분해 – JAVA [자바] https://www.acmicpc.net/problem/11653 11653번: 소인수분해 첫째 줄에 정수 N (1 ≤ N ≤ 10,000,000)이 주어진다. www.acmicpc.net 문제 문제 풀이 백준 11653번 소인수분해는 브론즈 1 난이도의 수학 문제이다. 이 문제는 되게 간단하다. 숫자 N이 주어졌을 때 이 N을 소인수 분해한 결과를 출력하면 된다. 예를 들어서 6이 주어지면 2와 3을 출력하면 된다. 이 문제는 간단한 while-loop을 이용해서 풀 수가 있다. 우선 n을 1이 될때까지 나눠야 하기 때문에 while-loop이 종료되는 기준은 n == 1이라고 설정한다. 따라서, while (n != 1)로 한다. 그리고 int i = 2로 초기화해서 선언하고 이 n이 i로 나눠지면.. 2022. 7. 31.
[백준] 10757번 : 큰 수 A+B – JAVA [자바] https://www.acmicpc.net/problem/10757 10757번: 큰 수 A+B 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. www.acmicpc.net 문제 문제 풀이 백준 10757번 큰 수 A+B는 브론즈 5 난이도의 수학 및 구현 문제이다. 이 문제는 큰 수 A와 B가 주어졌을 때 이 두 수의 합을 구하면 되는 문제이다. 이 문제는 int형이나 long형을 써서 풀 수 있는 문제가 아니다. 그 이유는 이 문제에서 입력으로 주어지는 수는 long형의 범위를 초과하기 때문이다. 만약에 long형을 쓰면 다음과 같은 예외(exception)가 뜨는 것을 볼 수가 있다. 따라서 이 문제는 BigInteger를 사용해야 한다. 만약에 BigInteger를 잘.. 2022. 7. 31.
[알고리즘] 계수 정렬 (Counting Sort) 목차 계수 정렬이란? 계수 정렬은 데이터 값을 직접 비교하지 않고, 단순하게 각 숫자가 몇 개 있는지 개수를 세어 저장한 후에 정렬하는 알고리즘이다. 기존의 정렬 알고리즘들은 위치를 바꾸며 정렬을 했는데, 계수 정렬에서는 크기를 기준으로 개수만 세면 되기 때문에 위치를 변경할 필요가 없다. 계수 정렬의 큰 특징은 값 비교가 일어나지 않기 때문에 속도가 빠르다는 것이다. 하지만, 개수를 저장하는 배열을 사용해야 하기 때문에 추가 공간이 필요하다. 그래서, 정렬해야 할 수의 범위가 작을 때에만 유리하다. 이 이유는 예를 보면서 설명하겠다. EX) 0, 100, 2, 10, 10000 오름차순으로 정렬하기 예를 들어서 정렬해야 할 수가 0, 100, 2, 10, 10000이면 고작 5개의 수를 정렬하는데 0부.. 2022. 7. 29.
[알고리즘] 병합 정렬 (Merge Sort) 목차 병합 정렬이란? 병합 정렬은 분할 정복 (Divide and Conquer) 방식을 이용해서 하나의 리스트를 두 개의 리스트로 분할한 다음 각각의 분할된 리스트를 정렬한 후에 합해서 정렬된 하나의 리스트로 만드는 정렬 알고리즘이다. 추가로 병합 정렬은 퀵 정렬과 달리 정렬을 할 때 데이터 크기만큼의 추가 공간이 필요하므로 제자리 정렬 (in-place sort)이 될 수는 없다. 병합 정렬은 분할 정복의 다음과 같은 과정을 거친다. 분할(Divide) : 리스트를 두 개의 리스트로 분할한다 정복(Conquer) : 분할된 리스트를 정렬한다. 결합(Combine): 정렬된 두 개의 리스트를 하나의 정렬된 리스트로 결합한다. 이제 병합 정렬의 예시를 한번 살펴보겠다. 병합 정렬 병합 과정 분할된 리스트.. 2022. 7. 28.
[백준] 10845번 : 큐 – JAVA [자바] https://www.acmicpc.net/problem/10845 10845번: 큐 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 문제 문제 풀이 백준 10845번 큐는 실버 4 난이도의 자료 구조 및 큐 문제이다. 이 문제는 간단히 문제에 나와있는 명령어 6개를 구현하면 된다. 만약 큐에 대해 공부하고 싶으면 밑에 있는 링크를 참고하면 되겠다. https://propercoding.tistory.com/18 [자료구조] 큐(Queue) 목차 큐(Queue)의 개념 큐는 FIFO 선입선출(First In Fi.. 2022. 7. 26.
[백준] 2752번 : 세수정렬 – JAVA [자바] https://www.acmicpc.net/problem/2752 2752번: 세수정렬 숫자 세 개가 주어진다. 이 숫자는 1보다 크거나 같고, 1,000,000보다 작거나 같다. 이 숫자는 모두 다르다. www.acmicpc.net 문제 문제 풀이 백준 2752번 세수정렬은 브론즈 4 난이도의 정렬 문제이다. 이 문제는 되게 간단하다. 입력으로 3개의 숫자가 주어지고 이 숫자를 정렬해서 출력해주면 된다. 이 문제는 자바에서 기본으로 제공되는 Arrays.sort() 함수를 이용해서 풀어도 되고 아니면 퀵 정렬, 선택 정렬이나 삽입 정렬 등을 직접 구현해서 풀어도 된다. 만약에 이 정렬 알고리즘들을 공부하고 싶으면 밑에 있는 링크를 참고하면 되겠다. https://propercoding.tistory.c.. 2022. 7. 26.
반응형