문제https://www.acmicpc.net/problem/1389풀이N개의 노드 M개의 간선을 입력받고, 각 노드별 케빈 베이컨 거리의 합을 구하고 그 중 최솟값을 찾는 문제케빈 베이컨 거리는 각 노드에서 출발해서 다른 모든 노드까지 가는데 걸리는 최단 거리의 합이다.이를 구하기 위해서는 최단거리 알고리즘을 알아야 한다. 최단거리 알고리즘에는 대표적으로 다익스트라와, 플로이드 워셜이 있음다익스트라의 경우 한 노드에서 다른 모든 노드로 가는데 걸리는 최단거리를 구할 수 있는 알고리즘이다.따라서 다익스트라를 노드의 개수(N) 만큼 반복해서 구할 수도 있음 플로이드 워셜의 경우 모든 노드에서 다른 모든 노드로 가는데 걸리는 최단거리를 구하는 알고리즘이다.다익스트라를 N번 사용해서 구하는 값과 동일한 결과를..
문제 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr풀이progress 별로 걸리는 시간을 계산한 값을 큐에 넣고큐의 맨 앞의 값이 이전의 값(lastIdx)보다 작거나 같을 경우, 같이 빼낼 수 있기 때문에 그룹화를 위한 카운트 ++큐의 맨 앞의 값이 이전의 값(lastIdx)보다 클 경우, lastIdx를 갱신해주고 배포를 진행한다. 큐의 길이가 0이 되면, 마지막 배포를 진행한다.코드import java.util.*;class Solution { public List solution(int[] p, int[] s) { int N = s...
문제 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr풀이스택을 사용하면 arr의 길이만큼만 순회해서 구할 수 있는 문제스택이 비어있거나, 스택의 최상단 값이 arr[i]와 다르다면 스택에 arr[i]를 push해준다.이렇게 되면 스택에 같은 수가 들어오지 않음!코드import java.util.*;public class Solution { public Stack solution(int []arr) { int[] answer = {}; Stack stack = new Stack(); for(int ..
문제https://www.acmicpc.net/problem/10799풀이stack을 활용해서 푸는 문제 '(' 열린괄호가 나올 경우, 스택에 push')' 닫힌괄호가 나올 경우, 스택에 pop또한 닫힌괄호에서 레이저라면 ans에 스택의 size만큼 더해준다.(레이저가 아니라면 1만 더해줌)1을 더해주는 이유는 문제에 나온 그림대로 막대가 마무리 되는 부분에서 한 조각이 더 나오기 떄문코드import java.io.*;import java.util.*;class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader..
문제https://www.acmicpc.net/problem/9012풀이스택의 대표적인 '괄호 문제'괄호 문자열이 주어지고 괄호가 유효하게 잘 닫혀있는지 확인하는 문제 스택을 열린괄호만 저장하고 닫힌괄호를 통해 열린괄호를 하나씩 소거해나가는 방법 문자열을 순회하며'(' 열린괄호일 때는 스택에 push 해주고')' 닫힌괄호일 때는 스택을 pop 해주며 짝을 맞춰준다.(단,, 스택이 비어있다면 return false)문자열 순회가 끝나고나서 스택이 비어있다면 return true(비어있지 않다면 return false)코드import java.io.*;import java.util.*;class Main { public static void main(String[] args) throws IOExcep..
문제https://www.acmicpc.net/problem/10828풀이스택 자료구조를 사용해서 입력 action에 맞게 메서드를 사용해주었음코드import java.io.*;import java.util.*;class Main { public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringBuilder sb = new StringBuilder(); StringTokenizer st; int N = Integer.parseInt(br.readLine()); ..
문제https://www.acmicpc.net/problem/1924풀이2007년 1월 1일이 월요일일때, 2007년 X월 Y일은 무슨요일인지 찾는 문제문제를 풀기 위해서 월의 단위를 일의 단위로 통일해서 해결했음 3월 7일을 찾는다면,1월과 2월은 모두 세어야 하기 때문에, 1월의 일수 + 2월의 일수를 sum에 더해주고나머지 7일을 카운트 하는 방식으로 진행 일수가 모두 계산이 되었다면,SUN ~ SAT가 0 ~6번 인덱스를 갖는 배열(yoil)을 만들고나머지 연산을 활용해서 yoil[일수 % 7]을 출력해준다.코드import java.io.*;import java.util.*;class Main { static int[] month = {0, 31, 28, 31, 30, 31, 30, 31, ..