프로그래머스 43

[도구정리] 코딩테스트 EOF 입력 처리(JAVA)

🧪 자바에서 테스트 케이스가 여러 가지 방식으로 주어질 때 입력 처리 방법문제를 풀다 보면 테스트 케이스가 다양한 방식으로 주어질 수 있다. 그 방식에 따라 입력 처리 로직을 다르게 구성해야 한다.✅ 1. 테스트 케이스 개수를 알려주는 상황가장 흔한 형태로, 첫 줄에 테스트 케이스의 수 T가 주어진다.BufferedReader br = new BufferedReader(new InputStreamReader(System.in));int T = Integer.parseInt(br.readLine());for (int i = 0; i ✅ 2. 특정 문자열이 종료를 나타내는 경우예를 들어, 입력이 "0"일 경우 테스트 종료를 의미하는 입력 방식.BufferedReader br = new BufferedRea..

[프로그래머스] 요격 시스템(JAVA)

문제https://school.programmers.co.kr/learn/courses/30/lessons/181188풀이(16분)import java.util.*;import java.io.*;class Solution { public int solution(int[][] targets) { // e 오름차순 정렬 Arrays.sort(targets, (o1, o2) -> o1[1] - o2[1]); int ans = 0; int x = 0; for (int[] target : targets) { if (x 문제 풀이 전략 괜히 어렵게 생각하느라 시간을 좀 쓴 문제이다.풀이 방법은 간단하다. 1. 끝점..

[프로그래머스] 연속 부분 수열 합의 개수(JAVA)

문제https://school.programmers.co.kr/learn/courses/30/lessons/131701풀이(15분)import java.util.*;class Solution { public int solution(int[] elements) { int answer = 0; Set set = new HashSet(); int originLength = elements.length; int[] arr = new int[originLength * 2 - 1]; for(int i = 0; i  원형수열을 사용해야 하기 때문에 x2-1의 길이만큼의 배열을 만들어준다.예를 들어 문제에서 제시된 7 9 1 1 4라면 9의 길이만큼의..

[프로그래머스] 디펜스 게임(JAVA)

문제https://school.programmers.co.kr/learn/courses/30/lessons/142085 풀이(17분)import java.util.*;class Solution { public int solution(int n, int k, int[] enemy) { int answer = 0; PriorityQueue pq = new PriorityQueue(Collections.reverseOrder()); for (int i = 0; i 0) { n += pq.poll(); k--; } else { break; } } answer++; } return answer; }} 처음에 조금 헤매었지만 풀이의 사고과정은 간단하다.내가 이 작업..

[프로그래머스] 마법의 엘레베이터(JAVA)

문제https://school.programmers.co.kr/learn/courses/30/lessons/148653풀이(13분)class Solution { public int solution(int storey) { int answer = 0; while(storey > 0){ int check = storey % 10; storey /= 10; if(check 10의 제곱 단위로 움직일 수 있기 때문에 10을 기준으로 나머지 연산을 하며 진행했다. 1. 10으로 나눈 뒤의 나머지를 체크한다.1-1. 나머지가 5보다 작다면 나머지만큼 돌을 쓰게 된다.1-2. 나머지가 5보다 크다면 10-(나머지) 만큼의 돌을 ..

[프로그래머스] 뒤에 있는 큰 수 찾기(JAVA)

문제https://school.programmers.co.kr/learn/courses/30/lessons/154539풀이(40분)import java.util.*;class Solution { public int[] solution(int[] numbers) { Stack stack = new Stack(); int[] answer = new int[numbers.length]; Arrays.fill(answer, -1); for (int i = 0; i  초기 뒤에 있는 것중 자기보다 큰 수 중 가장 작은 것을 찾는 문제인줄 알고 이분탐색으로 풀었으나 아니었고, 스택을 사용했다. 스택을 사용하면서 쓴 가장 중요한 아이디어는 일반적으로 스택에 값을..

[프로그래머스] 택배 배달과 수거하기(JAVA)

문제https://school.programmers.co.kr/learn/courses/30/lessons/150369 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr풀이(30분)class Solution { public long solution(int cap, int n, int[] deliveries, int[] pickups) { long answer = 0; int deliveryCheck = n - 1; // 배달을 해야 할 마지막 집의 인덱스 int pickupCheck = n - 1; // 수거를 해야 할 마지막 집의 인덱스 while..