(Java) 프로그래머스 위장
·
코딩 테스트
의상을 조합하는 경우의 수를 어떻게 계산해야 하는지 고민했다. 결국 하나하나 따져보니 A와 B를 조합하는 경우의 수는 A * B가 되고 A를 착용하고 B는 착용하지 않거나 A를 착용하지 않고 B를 착용하는 경우도 있으니 (A+1) * (B+1)이 된다. 마지막으로 아무것도 안입는것은 허용되지 않으므로 아무것도 입지 않은 1가지를 빼주면 (A+1) * (B+1) - 1 이 된다. 최종 코드 import java.util.HashMap; class Solution { public int solution(String[][] clothes) { // 곱셉을 위해 1로 초기화 int answer = 1; HashMap map = new HashMap(); // 옷 종류별로 map에 넣기 for (int i=0; i
(Java) 프로그래머스 카펫
·
코딩 테스트
문제를 보고 어떻게 풀어야 할지 한참을 생각했다. 해결방법은 떠오르는데 코드로 옮기지를 못해서 너무 스트레스를 받았다. 검색을 통해 힌트를 얻었는데 고민하던 부분을 continue로 해결하는 것을 보고 좀 허무하고 반성이 되었다. 최종 코드 class Solution { public int[] solution(int brown, int yellow) { int[] answer = new int[2]; int total = brown + yellow; for (int i = 1; i col) { continue; } // 가로 - 2 * 세로 - 2 가 노란색 개수이므로 if((row - 2) * (col - 2) == yellow) { answer[0] = col; answer[1] = row; retu..
(Java) 프로그래머스 구명보트
·
코딩 테스트
처음에 문제를 잘못 읽어서 구명보트에 2명씩 타는 게 아니라 무게 제한만 지키면 몇명이든 탈 수 있는 것으로 생각해서 완전히 망했었다.... 문제를 다시 읽고 보트 제한이 2명이라는것을 알고 나서는 오히려 더 쉽게 풀 수 있었다. 최종 코드 import java.util.Arrays; class Solution { public int solution(int[] people, int limit) { int answer = 0; // 무거운 사람과 가벼운 사람을 분류하기 위한 정렬 Arrays.sort(people); int idx = 0; // 최소로 구명보드를 사용하려면 가장 무거운 사람과 가장 가벼운 사람 for (int i = people.length - 1; i >= idx; i--) { // 무거..
(Java) 프로그래머스 주식가격
·
코딩 테스트
문제를 이해하는게 너무 어려웠다. 검색을 통해 설명들을 차분하게 읽고 나서야 해결 방법이 보이기 시작했다. 코드를 작성하는건 그리 어렵지는 않았다. 최종 코드 class Solution { public int[] solution(int[] prices) { int[] answer = new int[prices.length]; // 이중 for문을 돌면서 값 비교 for (int i = 0; i prices[j]) { answer[i]++; break; } answer[i]++; } } return answer; } }
(Java) 프로그래머스 프린터
·
코딩 테스트
간단해 보이는 듯 하지만 은근히 생각해야 할게 많아서 꽤나 재미있게 풀었던 문제였다. 최종 코드 import java.util.Collections; import java.util.PriorityQueue; class Solution { public int solution(int[] priorities, int location) { int answer = 0; // 내림차순으로 우선순위 큐 만들기 PriorityQueue pq = new PriorityQueue(Collections.reverseOrder()); for(int n : priorities){ pq.offer(n); } // 큐가 비어있지 않다면 while(!pq.isEmpty()){ // 큐에서 나오는 값과 매칭되는 경우를 탐색. for(..
(Java) 프로그래머스 전화번호 목록
·
코딩 테스트
간단하게 해결할 수 있을 것 같은 문제였는데 substring을 이용하여 j까지 자르는 생각을 하는데 오래 걸렸다. 그 부분을 넘기니 바로 답이 나와 깔끔하게 해결했다. 최종 코드 import java.util.HashMap; class Solution { public boolean solution(String[] phone_book) { boolean answer = true; HashMap hs = new HashMap(); // 전화번호 해시맵에 넣기 for (int i = 0; i < phone_book.length; i++) { hs.put(phone_book[i], i); } // containsKey과 substring으로 접두어인지 검사 for (int i = 0;i < phone_book..
(Java) 프로그래머스 튜플
·
코딩 테스트
문제가 복잡하게 쓰여있는데 차근히 읽어보니 어렵지 않았다. 풀이 방법은 바로 보이는데 String으로 넘어오는 s를 어떻게 배열로 변환할지 생각하는데 시간을 많이 썼다. 최종 코드 import java.util.*; class Solution { public int[] solution(String s) { int[] answer = {}; // s의 맨 앞 {{ 부분 자르기 s = s.substring(2, s.length()); // s의 맨 뒤 }} 부분 자르고 },{ 부분 -로 변경 s = s.substring(0, s.length()-2).replace("},{", "-"); // -을 기준으로 자르기 String[] temp = s.split("-"); // 람다를 이용해서 길이별로 정렬 Arr..
(Java) 프로그래머스 H-Index
·
코딩 테스트
문제의 카테고리가 정렬로 되어 있어 정렬을 이용해야 한다고 생각하고 문제를 읽기 시작했는데 이 문제에 정렬이 꼭 필요한가?? 하는 생각이 들어 생각나는 대로 코드를 작성했다. 문제도 이해하기 까다로운 부분이 몇 개 있어 고민하다가 약간 끼워 맞추듯이 작성했다. 정답으로 처리되긴 하나 다른 분 코드를 보니 왜 정렬을 하는지 알 수 있었다. 최종 코드 import java.util.ArrayList; import java.util.Collections; import java.util.List; class Solution { public int solution(int[] citations) { int answer = 0; int h = 0; List list = new ArrayList(); for (int ..
(Java) 프로그래머스 가장 큰 정사각형 찾기
·
코딩 테스트
완전탐색으로 구현해야 되나 고민이 많이 되었다. 시간초과가 날 확률이 높아보여서 생각만 하고 시도해보지 않았다. 다른 방법이 떠오르지 않아 검색을 통해 해결했다. 그런데 왠걸..... 또 DP를 이용해야 하는 문제였다...... DP의 개념이 이해하기 힘들었는데 이번 문제를 해결하면서 전보단 많이 정리가 된 것 같다. 그래도 어렵다... 최종 코드 class Solution { public int solution(int [][]board) { int answer = 1234; // 계산을 위한 배열 만들기 int[][] temp = new int[board.length + 1][board[0].length + 1]; for (int i = 0; i < board.length; i++) { for (int..