[백준1157- Java] 구현 - 단어 공부
·
문제 풀이/백준 문제풀이
단어 공부 문제 풀이 문제 파악 각 문자에 대해 반복출현 숫자를 담는다. 담은 숫자를 비교하여 가장 큰 수를 출력한다. 가장 큰 수를 가진 문자열이 여러개인 경우 ?를 출력한다. 변수 생성 단어를 받을 문자열 변수 생성 코드 구현 package Simulation; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.*; import java.io.*; public class SimulationP1157 { public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader(new InputStreamRe..
[백준11047 - Java] 구현 - 주사위 굴리기
·
문제 풀이/백준 문제풀이
주사위 굴리기 문제 풀이 문제 파악 필요한 기능 이동 이동시에는 지도 밖으로 나가는지 확인해야 하는 조건 필요 이동 시 주사위 배열의 위치를 변경시켜줘야 함 바닥면 복사 바닥이 0 일 경우 주사위의 바닥면을 바닥에 복사 바닥이 0 이 아닐경우 바닥의 수를 주사위 바닥면에 복사 후 바닥의 값은 0으로 변경 변수 생성 지도 생성에 필요한 변수 현재 위치 변수 주사위 오더 횟수 변수 동서남북 이동시 필요한 x,y 이동 배열 변수 주사위 배열 변수 public static int n,m,x,y,k; public static int[][] map; //동,서,북,남 public static int[] dx = {0,0,-1,1}; public static int[] dy = {1, -1, 0, 0}; //윗,바,..
[백준11047 - Java] 동전 0 Greedy 알고리즘으로 풀
·
문제 풀이/백준 문제풀이
Greedy알고리즘 이란? 🎯최적의 값을 구해야 하는 상황에서 사용된다. 🎯각 단계에서 최적이라고 생각되는 방법으로 값을 반환해 나가는 방식이다. 🎯주로 문제를 분할 가능한 문제들로 분할한 뒤, 각 문제들에 대한 최적의 답을 구한 뒤 이를 결합하여 전체 문제의 최적의 값을 구하는 경우 사용한다. 쉽게 말해서 규칙을 파악하고 그 규칙을 메서드화 한 후 반복수행하여 값을 구하는 방식이라고 할 수 있다. 위 문제에서 규칙을 파악하기 위해 예시를 봐보자. 예상해볼 수있는 규칙 1. 4200원보다 큰 숫자는 무시해도 된다. 2. i>=2인 경우에는 A의i번째는 Ai-1의 배수라고 하였다. 각 숫자들은 배수관계라는 것을 알 수있다. 예를 들어 10(A의 3번째)은 5(A의 2번째)의 배수이다. 우리는 최소한의 연산..
[백준12789-자바/우선순위큐] 도키도키 간식드리미
·
문제 풀이/백준 문제풀이
위 문제는 글이 매우 길다. 이러한 문제들은 글에서 힌트를 얻을 수 있기 때문에 입력과 출력조건을 읽기전에 천천히 읽어보자. 이런 힌트를 확인할 수 있다. 이 글을 제대로 읽지 않았다면 홀로 외롭게 재귀문제라고 판단되어 열심히 무한호출 코드를 돌리고있을것이다....(절대 경험담 아님) 이 힌트외에는 꼼꼼히 파악해야 할 부분이 하나 더 있다. 해당 순서가 아닌 사람들은 1열로 들어갈 수 있는 공간에 차례대로 집어넣는다. 대기열에서 해당 순번인 사람을 꺼낼 때 해당 순번인지 스택에서도 확인하는 절차가 필요하다. 예를 들어 , 13245 의 입력을 받았다. 대기열에는 13245가 순서대로 서있는것이다. 위 문제대로 풀어보면 다음과 같다. 1. 1번이 바로 입장한다. 3245가 대기열에 있다. 2. 3번은 다음..
[백준 1427 - 자바/ 선택정렬] 소트인사이드
·
문제 풀이/백준 문제풀이
크게 어렵지 않은 문제이므로 간단한 문제풀이 절차만 적어보겠다. 1. 수는 1000000000 보다 작거나 같은 자연수라고 했다. 자릿수를 보면 10자리이다. 2. 시간복잡도로 선택정렬을 사용한다면 각 자리 숫자를 완전탐색한다면 O(N^2)의 복잡도를 가지므로 10 * 10 = 100회의 연산을 거친다. 3. 1초당 1억번의 연산을 기준으로 잡는다면 충분히 선택 정렬을 사용해도 무방하다!\ 4. BuffredReader와 StringTokenizer로 입력을 받아 연산해준다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; pu..
[백준 - 1715/ java] 카드정렬하기 - 우선순위 큐
·
문제 풀이/백준 문제풀이
필요 알고리즘 개념 그리디 일정한 규칙을 정해 매번 해당 규칙을 적용하다보면 답이 나오는 알고리즘 우선순위 큐 우선순위 큐는 자동으로 수가 우선순위대로 정렬된다. 우선 순위 큐를 사용해 mini heap을 사용 풀이 위 문제의 핵심은 연산 과정의 중간 결과가 다시 연산에 사용된다는 것 매번 가장 작은 2개를 뽑아 더해주면 된다 백준문제의 예시 1. 3개의 수를 받는다. 10 / 20 / 40 2. 연산 시작 10+20 =30 30을 합계에 포함한다. 중간 연산의 30을 다시 큐에 넣어준다. 30/40 3. 두 번째 연산 30+40 70을 합계에 포함한다. 결과 = 100 코드구현 import java.util.PriorityQueue; import java.util.Scanner; public class..