https://www.acmicpc.net/problem/2251bfs를 통해 a가 빌 때의 모든 경우의 수를 따져 볼 수 있다.bfs를 거쳐서 한 번의 시도가 끝나는 경우는 a에 담긴 물의 양이 0이 되는 경우이고, 이 경우의 c의 물 양을 중복되지 않게 저장하면 된다. visited를 사용해 현재 물통에 담겨있는 현황이 중복되지 않게 한다 - 중복 탐색하지 않게! import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.*;public class Main { static boolean[][][] visited; static List answer = new ArrayList(); int[] contai..
https://www.acmicpc.net/problem/2589최단거리들 중 최장거리를 찾는 문제이기 때문에확정적으로 최단거리를 찾을 수 있는 BFS를 사용해야 한다.BFS는 큐(Queue)를 이용하여 구현하면 된다.import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.Arrays;import java.util.LinkedList;import java.util.Queue;import java.util.StringTokenizer;public class Main { static int[] dy = {0, 1, 0, -1}; static int[] dx = {-1, 0, 1, 0}; public voi..
https://school.programmers.co.kr/learn/courses/30/lessons/17677 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr주어진 예제 입출력을 잘 확인해야 하는 문제였다.divide by zero의 경우 1로 취급하여 65536이 나오게 해야 했음!단순무식하게 해결한 것 같아 중복, 교집합 확인하는 방법을 수정해야 할 것 같다.import java.util.ArrayList;import java.util.List;class Solution { public int solution(String str1, String s..
https://www.acmicpc.net/problem/28278 import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.Stack;import java.util.StringTokenizer;public class Main { public void solution() throws Exception{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringBuilder sb = new StringBuilder(); int n = Integer.parseInt(br.readLine()); ..
https://school.programmers.co.kr/learn/courses/30/lessons/176962 멈춘 과제들 -> stack사용(가장 최근에 멈춘 걸 다시 시작하니까) 1. 배열 시간순으로 정렬 -> Map 사용, key를 List 사용해서 정렬 2. 지금 하고 있는 것의 끝 시간 vs 다음 할 일의 시작 시간 비교 - 다음 시작 시간이 더 먼저일 경우 시작 시간 전까지 시간 빼서 stack에 이름과 저장 - 만약 다음 시작 시간이 더 늦거나 같을 경우 이번 거 끝냄, answer에 이름 추가 -2번 처음으로 stack에 [과목명, 남은 시간] 저장해서 현시간에 더한 것 vs 다음 과제 비교! import java.util.*; class Solution { public String[..
https://school.programmers.co.kr/learn/courses/30/lessons/142086 1. Map을 써서 새로운 알파벳이 나올 때마다 인덱스를 업데이트 해 준다 => 기존에 있던 알파벳일 경우 찾아서 현재 인덱스에서 마이너스 한 값을 result에 입력 없으면 걍 -1을 result 에 넣고, 현재 인덱스를 map에 넣어줌 -> 시간복잡도 O(N) 2. 이중 for 문 돌리기 ->O(N^2) 시간복잡도 적은 1번 사용 import java.util.*; class Solution { public int[] solution(String s) { int[] answer = new int[s.length()]; Map charMap = new HashMap(); for(int i..
https://school.programmers.co.kr/learn/courses/30/lessons/138476 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr https://blog.naver.com/khk990/222920087160 [Java] HashMap key, value 정렬 HashMap 정렬 key 정렬 value 정렬 오름차순 내림차순 역순 역순정렬 맵정렬 해시맵정렬 map정렬 blog.naver.com 이 글을 참조해서, value의 크기로 정렬한 key 값을 사용하였다 value의 크기가 큰 순으로 배열하여, k에서 차례대로 뺀 다..
https://school.programmers.co.kr/learn/courses/30/lessons/12973#qna import java.util.Stack; class Solution{ public int solution(String s){ Stack stack = new Stack(); int idx = 0; char[] chars = s.toCharArray(); while(idx
https://school.programmers.co.kr/learn/courses/30/lessons/12940 class Solution { public int[] solution(int n, int m) { int[] answer = new int[2]; answer[0]=gcd(n,m); answer[1]=m*n/answer[0]; return answer; } int gcd(int a, int b){ if(a%b==0) return b; return gcd(b,a%b); } }