[JAVA] 프로그래머스 귤 고르기
·
Algorithm/Programmers
//최소한의 종류, 최대한의 개수import java.util.*;class Solution { public int solution(int k, int[] tangerine) { int answer = 0; Map counting = new HashMap(); for(int i : tangerine) { counting.put(i, counting.getOrDefault(i, 0) + 1); } List valueList = new ArrayList(counting.values()); valueList.sort(Collections.reverseOrder()); ..
[JAVA] 프로그래머스 리코쳇 로봇
·
Algorithm/Programmers
import java.util.LinkedList;import java.util.Queue;class Solution { public int solution(String[] board) { int[] goal = new int[2]; int[] start = new int[2]; Queue nextNode = new LinkedList(); boolean[][] visited = new boolean[board.length][board[0].length()]; for (int i = 0; i = board.length || newY = board[0].length() || board[newX].charAt(ne..
[Java] 프로그래머스 멀리뛰기
·
Algorithm/Programmers
//dfs으로 하면 시간초과// % 1234567이니까 무조건이다./*1121123111211241111112121211225111111112112112112111221122212611111111112111211121112111211112211211221211122222dp[n] = dp[n-1] + dp[n-2]*/class Solution { public long solution(int n) { long[] dp = new long[2001]; dp[0] = 0; dp[1] = 1; dp[2] = 2; for(int i = 3; i  풀이1. 우선 % 1234567을 한다는건 경우의수가 엄청나다는 것이니 탐색으로..
[C++] 프로그래머스 요격시스템
·
Algorithm/Programmers
#include #include #include using namespace std; bool sortCompare(vector a, vector b) { return a[1] = end) { answer++; end = targets[i][1]; } } return answer; } 풀이 1. 끝지점이 작은순으로 정렬해준다. 2. 끝지점과 다음 시작점이 맞닿았다면 해당 끝지점으로 바꿔준..
[C++] 프로그래머스 이진 변환 반복하기
·
Algorithm/Programmers
#include #include #include using namespace std; //변환 횟수, 제거한 0개의 개수 //길이로 이진변환 vector solution(string s) { vector answer(2, 0); while(s.length() > 1) { int count = 0; answer[0]++; for(int i = 0; i 0) { s += count % 2 == 1 ? "1" : "0"; count /= 2; } } return answer; } 풀이 1. 0을 지워가며 지워진 0의 개수 저장 ..
[C++] 프로그래머스 징검다리건너기
·
Algorithm/Programmers
#include #include using namespace std; bool FindAnswer(int n, int k, const vector &stones) { int count = 0; for(int i = 0; i < stones.size(); i++) { if(stones[i] - n = k) { return true; } } return false; } int solution(vector stones, int k) { int start = 0; int end = 0; int mid; //find end for(int i = 0; i < stones.size(); i++) { end = max(end, stones[i]); } while(start