문제https://school.programmers.co.kr/learn/courses/15009/lessons/121687 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 풀이로봇의 방향에 따라서 좌표를 기록하는 문제이다. 1. 로봇의 방향과 좌표를 기록하는 변수를 선언한다. 2. 방향 이동 배열을 생성한다. 3. R,L,G,B에 해당하는 방향 회전 처리나 이동을 처리한다. 3-1. 오른쪽 회전은 방향에서 +1 해서 4를 나머지 연산을 한다.3-2. 왼쪽 회전은 방향에서 +3 해서 4를 나머지 연산을 한다.3-3. 현재 방향으로 x, y를 dx, dy에 방향에 해당하는 것을 더한다.3-4. 현재 방향으로 x, ..
Problem Solving
문제 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 풀이프로그램이 우선순위를 토대로 처리를 해주면 되는 문제이다. 1. 프로그램이 호출된 시각이 정렬이 되어 있지 않으므로, 호출 시각 > 점수 오름차순으로 정렬한다. 2. 프로그램을 처리할 우선순위 큐를 만들고 점수 > 호출 시각 오름차순으로 정렬 기준을 람다로 만든다. 3. 프로그램이 시작하는 시간에 대한 변수를 만든다.프로그램이 호출 시각과 시작 시간이 대기한 시간이므로, 필요하다고 생각했다. 4. 프로그램이 시작 시간 이전에 호출 되었던 프로그램들을 모두 우선순위 큐에 넣는다. 5-1. 우선순위 큐에 아무것도 들어가지 않았다는 것은 대기하지 않고 호출된..
문제https://school.programmers.co.kr/learn/courses/30/lessons/12915 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 풀이문자열 정렬 기준(Arrays.sort()에 있는 람다 구현)을 생각하면 되는 문제이다.1. n번째 있는 인덱스의 문자와 비교해서 같으면 문자열 오름차순 정렬한다.2. n번째 있는 인덱스의 문자와 비교해서 다르면 문자로 오름차순 정렬한다.3. 정렬한 배열을 반환한다. 소스코드import java.util.Arrays;class Solution { public String[] solution(String[] strings, int n) { ..
문제https://school.programmers.co.kr/learn/courses/15008/lessons/121685 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 풀이완두콩의 세대와 몇번째 완두콩에 대한 정보로 어떤 완두콩인지 알아내는 문제이다.2세대 완두콩 그룹별: 1개완두콩 총개수: 4개 3세대완두콩 그룹별: 4개완두콩 총개수: 16개 그림을 잘 보면 첫번째와 맨끝은 무조건 RR와 rr로 정해지는 것 같다.Rr에서 후손인 완두콩들을 보면 마찬가지이다. 사실 필자는 이 문제를 해결하지 못했었는데, 3세대에서 2번째 3번째 그룹은 RR인지 Rr인지 rr인지 확실하게 알 수 없다.그리고 1번째 그룹에 ..
문제 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 풀이종목에 참여할 수 있는 사람들 중, 종목의 개수만큼 사람들을 뽑아서 종목 번호(인덱스)를 할당하면 되는 문제이다.1. 사람, 종목의 개수를 기록하고, 종목 인덱스를 기록할 배열(personArr)을 만든다.2. 재귀를 이용해서, 사람에 해당하는 인덱스에 종목에 대한 인덱스를 기록한다.3. 종류 개수만큼 다 돌면 합계를 계산해서 최댓값을 갱신한다. 소스코드import java.util.Arrays;class Solution { private static int personCnt; private static int kindCnt; private..
문제 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 풀이1. 스킵이 되는 알파벳을 기록하기 위한 배열(isSkip)을 선언해서 기록한다.2. a~z까지에 대해서, index 만큼의 skip이 되는 배열을 선언해서 스킵이 되는 알파벳을 기록한다.3. s에 있는 문자에 대해서 스킵이 되는 알파벳을 StringBuilder로 붙인다. 소스코드import java.util.*;class Solution { public String solution(String s, String skip, int index) { int alphaCnt = 'z' - 'a' + 1; boolea..
문제 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 풀이네 점의 좌표로 직사각형의 넓이를 구하는 문제이다.1. 직사각형 x, y 좌표중에 최대 최솟값을 구한다.2. (x최대 - x최소) *( y최대 - y최소)가 직사각형의 넓이이다. 소스코드class Solution { public int solution(int[][] dots) { int x1 = Integer.MAX_VALUE; int y1 = Integer.MAX_VALUE; int x2 = Integer.MIN_VALUE; int y2 = Integer.MIN_VALUE; ..
문제 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 풀이ArrayList 1. a ~ z에 대한 인덱스를 담을 ArrayList를 만든다.2. 문자열에 있는 문자를 순회하면서, 각 알파벳에 맞는 인덱스를 넣는다.3. 2회 이상이 되면서, 인덱스가 차이가 1이상 차이나면 문자를 붙인다. 소스코드import java.util.ArrayList;class Solution { public String solution(String input_string) { char[] arr = input_string.toCharArray(); int alphaCnt = 'z' - 'a'..
문제 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 풀이칸에 있는 문자열과 상하좌우로 이웃한 칸의 개수를 세는 문제이다.1. 상하좌우 방향 배열을 생성한다. 2. h, w에 해당하는 문자열(target)을 기록한다.3. 범위를 넘는지 파악하면서, target과 같은 문자열이 상하좌우로 인접한 칸에 있다면, 개수를 증가시킨다. 소스코드class Solution { public int solution(String[][] board, int h, int w) { int[] dx = {1, -1, 0, 0}; int[] dy = {0, 0, 1, -1}; int..
문제https://school.programmers.co.kr/learn/courses/30/lessons/160586 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 풀이이 문제를 키 배열이 있다면, 키를 누른 최소 횟수를 구하는 문제이다.AAB ABC 라는 키 배열이 있는데, AB를 만드는 최소 횟수를 구한다고 하자.그러면 A를 만드는데 => 1번(키배열 상관 없음), B를 만드는데 => 첫번째 키배열에서 3번이 아니라, 두번째 키배열에서 2번을 눌러서 3번이 될 것이다. 즉1. 키 배열에 있는 알파벳 대문자들 중에서 문자의 최소의 번째(인덱스 + 1)를 구한다.2. 문자가 없다면, 만들 수 없으며(-1),..