문제https://www.acmicpc.net/problem/20207풀이입력으로 주어진 시작, 종료일에 대해서 시작 날짜 기준 오름차순 정렬하고, 시작 날짜가 같을 때 종료일 기준 내림차순 정렬 정렬된 값을 바탕으로 1~365를 순회하며1) 배열에 해당 칸의 높이를 구해줌2) 너비를 구해줌(코드에 주석을 달아놓았음!) 주의할 점- 마지막 일자(365일)에도 마킹이 될 수 있음- 마킹이 되었다면 높이는 최소 1임코드import java.io.*;import java.util.*;class Main { public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader(new Inp..
문제https://www.acmicpc.net/problem/12437풀이월 만큼 반복하면서 행(줄, 라인) 수를 구해주는 문제(이전 달에 남은 일수 + 월 일수)를 구해주고, 이를 주간 일수로 나눈 값(완벽히 만들어진 라인 수)을 더해줌주간 일수로 나누어 떨어진다면(완벽히 만들어지지 않은 라인이 없음) 이전 달에 남은 일수 = 0;주간 일수로 나누어 떨어지지 않는다면(완벽히 만들어지지 않은 라인이 존재) 이전 달에 남은 일수 = 나눈 나머지의 값코드import java.io.*;import java.util.*;class Main { static int daysInMonth, daysInWeek; public static void main(String[] args) throws IOExcep..
문제 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr풀이시작 지점(S)에서 주어진 쿼리에 따라서 움직이고 난 후의 위치를 리턴하는 문제이다. 움직임을 위해 park 배열을 2차원 배열로 변경해주고, 시작 지점의 좌표 값을 획득한다.현재 쿼리를 통해 방향과 얼만큼 움직일지 확인하고현재 위치(r, c)에서 해당 방향으로 한칸씩 움직였다고 가정했을 때, 그 위치가 맵을 벗어났거나 장애물이 있다면 바로 넘겨줌이 점을 while 반복과 flag를 사용해 구현한다. 이상이 없다면, 현재 위치 값을 갱신해주고, 다음 쿼리를 진행한다.코드import java.util.*;..
문제 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr풀이현재 유저의 순서가 주어지고, 한명씩 호명할 때마다 바로 앞 사람을 추월하므로 위치를 바꿔주면 된다.하지만, 호명하는 사람을 찾고 해당 인덱스의 앞에 위치한 사람과 바꾸는 과정은 유저의 수와 calling 수를 보았을 때 시간초과가 발생함 이를 해결하기 위해, 호명하는 사람을 빠르게 찾기 위해 map 자료구조를 사용했음map에서 호명하는 사람의 인덱스를 찾고호명한 사람의 인덱스는 현재 인덱스 -1로 바꿔줌호명한 사람의 앞 사람의 인덱스는 현재 인덱스(앞 사람의 인덱스 + 1과 동일)로 바꿔줌코드import..
문제 2116번: 주사위 쌓기첫줄에는 주사위의 개수가 입력된다. 그 다음 줄부터는 한 줄에 하나씩 주사위의 종류가 1번 주사위부터 주사위 번호 순서대로 입력된다. 주사위의 종류는 각 면에 적혀진 숫자가 그림1에 있는www.acmicpc.net풀이해당 문제는 1층에 위치한 주사위의 윗면이 1~6인 경우를 모두 탐색하며 그중 최댓값을 찾으면 된다.1층의 윗면이 결정됐다면 바닥면과 윗면을 제외한 수 중 가장 큰 수를 sum에 더해준다.2층에서는 1층의 윗면과 같은 수를 구해주고(2층의 바닥면의 수가 된다) 이를 바탕으로 윗면의 수를 구해준다.1번의 쌍은 6(6번의 쌍은 1: 윗면 or 아랫면)2번의 쌍은 4(4번의 쌍은 2)3번의 쌍은 5(5번의 쌍은 3) 이 방식으로 나머지 3, 4, 5, 6층을 구해주면 ..
문제 1015번: 수열 정렬P[0], P[1], ...., P[N-1]은 0부터 N-1까지(포함)의 수를 한 번씩 포함하고 있는 수열이다. 수열 P를 길이가 N인 배열 A에 적용하면 길이가 N인 배열 B가 된다. 적용하는 방법은 B[P[i]] = A[i]이다. 배열 A가 주www.acmicpc.net풀이문제가 이해가 잘 되지는 않았지만, 예제의 입력과 출력을 보고 이해했다. 원본 A 배열과, 원본을 오름차순 정렬한 B를 이용하여2중 for문을 통해 순회하면서A와 B의 값이 같아지는 부분의 B 인덱스를 순차적으로 출력해주면 된다.(문제에서 원하는 답)그리고 B인덱스는 방문 처리를 해주어 한 번만 출력하게 만들면 된다.코드import java.io.*;import java.util.*;public class..
문제 11053번: 가장 긴 증가하는 부분 수열수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이www.acmicpc.net풀이코드import java.io.*;import java.util.*;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String..
개념코드import java.io.*;import java.util.*;public class Main { static int N; static int[] arr; public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); N = Integer.parseInt(br.readLine()); arr = new int[N]; for(int i = 0 ; i arr[j]){ minIdx = j; } ..