목록Problem Solving (61)
오늘은 여기까지

https://www.acmicpc.net/problem/13567아래와 같이 영역의 넓이, 명령어 개수, 명령어가 주어지면 그 결과 로봇이 최종적으로 위치한 좌표를 출력하는 문제이다. 영역을 벗어났다면 -1을 출력한다.이때 명령어가 MOVE인 경우는 함께 주어진 수만큼 현재 방향으로 이동한다. 명령어가 "TURN 0"이면 왼쪽 90도만큼 회전, "TURN 1"이면 오른쪽 90도 회전이다. 처음에 방향이 동쪽으로 고정이기 때문에, dx와 dy를 시계방향 순대로 동, 남, 서, 북으로 설정했다.static int dir = 0; // 동남서북static int[] dx = {1, 0, -1, 0}; // 동남서북static int[] dy = {0, -1, 0, 1}; 크게 알고리즘이 필요하지 않았고 구현..

https://www.acmicpc.net/problem/1149 대충 N번째 집까지의 누적합에 그 다음 집의 최소 비용을 더한다는 개념에서 DP를 사용하면 될 것이라고 생각했다. 하지만 단순히 각 집마다 최소 비용을 선택해 누적합을 구하는 방법이 맞을까 고민해봤다.아래 예제를 보면 아니라는 것을 알 수 있다. 첫 번째 경우처럼 집마다 최소 비용을 선택한 경우 누적합은 1 + 100 + 100 = 201이다. 두 번째 경우 누적합은 100 + 1 + 1 = 102로 최소값을 갖는다. 결과적으로 각 집의 최소 비용을 찾아 누적합을 구하는 것이 아니고, 모든 경우의 수의 누적합을 구해 그 중 최소값을 찾아야 한다.1. 비용 계산에 필요한 Cost와 누적합을 저장할 DP를 각각 2차원 배열로 선언한다. 2..
https://school.programmers.co.kr/learn/courses/30/lessons/42626 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 힙 연습문제 답게 우선순위 큐를 사용하면 엄청 쉽게 풀린다.import java.util.*;class Solution { public int solution(int[] scoville, int K) { int answer = 0; PriorityQueue heap = new PriorityQueue(); for(int food : scoville) { ..
https://school.programmers.co.kr/learn/courses/30/lessons/131704 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 자바 스택 연습문제 풀이 중이다. import java.util.*;class Solution { public int solution(int[] order) { int answer = 0; Stack stack = new Stack(); int point = 0; for(int i=1; i
1. 처음에 HashSet 사용해서 풀이한 경우HashSet -> ArrayList 또는 Array로 변환 -> Integer에서 int 타입 변환어쨌든 한 단계 더 수고로운 관계로 그냥 처음부터 ArrayList에 저장하는게 나은듯import java.util.*;import java.io.*;class Solution { public int[] solution(int[] numbers) { HashSet set = new HashSet(); for(int i=0; ii).toArray(); Arrays.sort(answer); return answer; }} 2. ArrayList에 저장하는 경우import java.util.*;public..
https://www.acmicpc.net/problem/1253 투 포인터를 활용해 문제를 풀기 위해 숫자를 정렬해준다.예를 들어, 현재 판별하려는 수가 5일때 `num[start]` 또는 `num[end]`가 5와 같은 경우 count를 증가 시키면 안된다.이걸 생각 못해서(?) 한참 헤맸다.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)); int N = Integer.parseInt(..
https://school.programmers.co.kr/learn/courses/30/lessons/17679 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr0. board 문자열을 2차원 배열로 저장하는 부분String[][] block = new String[board[0].length()][board[0].length()];for (int i = 0; i 1. 제거할 4블록을 확인하는 부분boolean remove = false; // 제거할 블록 존재 여부boolean[][] check = new boolean[m][n]; // 제거할 블록 저장fo..

https://school.programmers.co.kr/learn/courses/30/lessons/138476입력 받은 귤의 크기와 개수를 저장하고, 개수를 기준으로 내림차순 정렬한다.최대한 크기의 종류가 적도록 선택하는 것이므로 개수가 많은 크기의 귤부터 모두 선택한다.import java.util.*;class Solution { public int solution(int k, int[] tangerine) { int answer = 0; HashMap map = new HashMap(); for(int tan : tangerine) { map.put(tan, map.getOrDefault(tan, 0) + 1); } ..

HashMap 활용하기 좋은 문제 같다.import java.util.*;class Solution { public String[] solution(String[] record) { HashMap map = new HashMap(); List history = new ArrayList(); for(String r : record) { String[] split_record = r.split(" "); if(split_record[0].equals("Enter")) { map.put(split_record[1], split_record[2]); } else if(s..

문제 설명완주하지 못한 선수의 이름을 리턴하는 문제이고, 선수 중에는 동명이인이 있을 수 있다.HahsMap과 keySet() 쓰면 되겠다 생각했더니 금방 풀렸다. import java.util.HashMap;class Solution { public String solution(String[] participant, String[] completion) { HashMap map = new HashMap(); for(String p : participant) { map.put(p, map.getOrDefault(p, 0) + 1); } for(String c : completion) { map.put(c, ma..