본문 바로가기

1.프로그래밍/알고리즘

(15)
[자료구조] Java Stack 이란? (Stack 메서드 정리, 예제 백준 9012 괄호 Java) [자료구조] Java Stack 이란? (Stack 메서드 정리, 예제 백준 9012 괄호 Java) Stack 이란? Stack이란 한쪽 끝에서만 Data의 입출력이 가능한 대표적인 자료구조이다. LIFO(Last In Firt Out)의 선형 구조이다. 즉, 가장 마지막에 들어간 데이터가 가장 먼저 나가는 구조이다. 즉, 쉽게 생각하면 일상에서 접시 혹은 책 등을 쌓아두는 구조라 생각하면 된다. 접시를 쌓아서 사용할 경우, 가장 나중에 놓여진 접시를 가장 먼저 사용하게 된다. Stack도 위와 같은 구조처럼, 가장 나중에 들어온 데이터를 가장 먼저 나가게 된다. Java Stack 사용하기 Java에서는 Stack을 편하게 사용할 수 있도록 java.util.Stack으로 라이브러리를 제공해 준다. ..
[자료구조] Java Queue 란? (Queue 메서드 정리, 예제 백준 11866 요세푸스 문제 Java) [자료구조] Java Queue 란? (Queue 메서드 정리, 예제 백준 11866 요세푸스 문제 Java) Queue 란? 큐 (Queue) 란 컴퓨터의 기본적인 자료구조 중 한가지 이다. 먼저 집어넣은 데이터가 먼저 나오는 구조이다 First In First Out(FIFO) 구조를 갖고 있다. 즉, 쉽게 생각하면 어떠한 곳을 이용하기 위해 줄을 서는 것과 같다고 생각하면 된다. 먼저 들어온 데이터가 먼저 빠져나가는 방식이다. 한가지 기억나는 재밌는 말이 있다. 햄버거를 주문하러 버거킹에 갔더니 여긴 큐가 3개네? 라고 들었던 말이 생각난다. Java Queue 사용하기 Java에서는 Queue를 쉽게 사용할 수 있도록 java.util 라이브러리에서 Queue 인터페이스를 지원한다. Queue를 ..
[알고리즘] 백준 2108 통계학 Java https://www.acmicpc.net/problem/2108 문제 수를 처리하는 것은 통계학에서 상당히 중요한 일이다. 통계학에서 N개의 수를 대표하는 기본 통계값에는 다음과 같은 것들이 있다. 단, N은 홀수라고 가정하자. 산술평균 : N개의 수들의 합을 N으로 나눈 값 중앙값 : N개의 수들을 증가하는 순서로 나열했을 경우 그 중앙에 위치하는 값 최빈값 : N개의 수들 중 가장 많이 나타나는 값 범위 : N개의 수들 중 최댓값과 최솟값의 차이 N개의 수가 주어졌을 때, 네 가지 기본 통계값을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 수의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 단, N은 홀수이다. 그 다음 N개의 줄에는 정수들이 주어진다. 입력되는 정수의 절댓값은 4,000을 ..
[알고리즘] 백준 1018 체스판 다시 칠하기 (브루트포스 알고리즘) https://www.acmicpc.net/problem/1018 문제 지민이는 자신의 저택에서 MN개의 단위 정사각형으로 나누어져 있는 M×N 크기의 보드를 찾았다. 어떤 정사각형은 검은색으로 칠해져 있고, 나머지는 흰색으로 칠해져 있다. 지민이는 이 보드를 잘라서 8×8 크기의 체스판으로 만들려고 한다. 체스판은 검은색과 흰색이 번갈아서 칠해져 있어야 한다. 구체적으로, 각 칸이 검은색과 흰색 중 하나로 색칠되어 있고, 변을 공유하는 두 개의 사각형은 다른 색으로 칠해져 있어야 한다. 따라서 이 정의를 따르면 체스판을 색칠하는 경우는 두 가지뿐이다. 하나는 맨 왼쪽 위 칸이 흰색인 경우, 하나는 검은색인 경우이다. 보드가 체스판처럼 칠해져 있다는 보장이 없어서, 지민이는 8×8 크기의 체스판으로 잘라..
[알고리즘] 백준 9020번 골드바흐의 추측 (에라토스테네스의 체, 소수 알고리즘) https://www.acmicpc.net/problem/9020 문제 1보다 큰 자연수 중에서 1과 자기 자신을 제외한 약수가 없는 자연수를 소수라고 한다. 예를 들어, 5는 1과 5를 제외한 약수가 없기 때문에 소수이다. 하지만, 6은 6 = 2 × 3 이기 때문에 소수가 아니다. 골드바흐의 추측은 유명한 정수론의 미해결 문제로, 2보다 큰 모든 짝수는 두 소수의 합으로 나타낼 수 있다는 것이다. 이러한 수를 골드바흐 수라고 한다. 또, 짝수를 두 소수의 합으로 나타내는 표현을 그 수의 골드바흐 파티션이라고 한다. 예를 들면, 4 = 2 + 2, 6 = 3 + 3, 8 = 3 + 5, 10 = 5 + 5, 12 = 5 + 7, 14 = 3 + 11, 14 = 7 + 7이다. 10000보다 작거나 같은..
[알고리즘] 백준 2869번 달팽이는 올라가고 싶다 Java https://www.acmicpc.net/problem/2869 문제 땅 위에 달팽이가 있다. 이 달팽이는 높이가 V미터인 나무 막대를 올라갈 것이다. 달팽이는 낮에 A미터 올라갈 수 있다. 하지만, 밤에 잠을 자는 동안 B미터 미끄러진다. 또, 정상에 올라간 후에는 미끄러지지 않는다. 달팽이가 나무 막대를 모두 올라가려면, 며칠이 걸리는지 구하는 프로그램을 작성하시오. 입력 첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000) 출력 첫째 줄에 달팽이가 나무 막대를 모두 올라가는데 며칠이 걸리는지 출력한다. Code import java.io.BufferedReader; import java.io.InputStreamReader; i..
[알고리즘] 백준 1193번 분수찾기 Java https://www.acmicpc.net/problem/1193 문제 무한히 큰 배열에 다음과 같이 분수들이 적혀있다. 1/1 1/2 1/3 1/4 1/5 … 2/1 2/2 2/3 2/4 … … 3/1 3/2 3/3 … … … 4/1 4/2 … … … … 5/1 … … … … … … … … … … … 이와 같이 나열된 분수들을 1/1 → 1/2 → 2/1 → 3/1 → 2/2 → … 과 같은 지그재그 순서로 차례대로 1번, 2번, 3번, 4번, 5번, … 분수라고 하자. X가 주어졌을 때, X번째 분수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 X(1 ≤ X ≤ 10,000,000)가 주어진다. 출력 첫째 줄에 분수를 출력한다. Code import java.io.BufferedReader; im..
[알고리즘] 프로그래머스 폰켓몬 Java https://school.programmers.co.kr/learn/courses/30/lessons/1845 문제 당신은 폰켓몬을 잡기 위한 오랜 여행 끝에, 홍 박사님의 연구실에 도착했습니다. 홍 박사님은 당신에게 자신의 연구실에 있는 총 N 마리의 폰켓몬 중에서 N/2마리를 가져가도 좋다고 했습니다. 홍 박사님 연구실의 폰켓몬은 종류에 따라 번호를 붙여 구분합니다. 따라서 같은 종류의 폰켓몬은 같은 번호를 가지고 있습니다. 예를 들어 연구실에 총 4마리의 폰켓몬이 있고, 각 폰켓몬의 종류 번호가 [3번, 1번, 2번, 3번]이라면 이는 3번 폰켓몬 두 마리, 1번 폰켓몬 한 마리, 2번 폰켓몬 한 마리가 있음을 나타냅니다. 이때, 4마리의 폰켓몬 중 2마리를 고르는 방법은 다음과 같이 6가지가 있..

728x90
반응형