프로그래머스
-
모각코PS / 프로그래머스 Lv3 단어 변환 & Leetcode 127 Word LadderPS 2022. 6. 11. 17:23
모각코 PS스터디 그래프 탐색 세 번째 문제인 '단어 변환'입니다. 이 문제는 Leetcode 127번 Word Ladder 문제와 완전히 동일해요. 단어들이 배열로 주어지는데 곧바로 그래프가 떠오른다면...? 어느 정도 그래프 탐색 카테고리의 문제에 익숙해졌다고 봐도 되는 거겠죠?😇 그것만 빨리 캐치한다면 특별히 어려운 점은 없습니다. 아, BFS 탐색의 레벨을 세는 꿀팁이 있으니까, 그 부분이 필요하시다면 참고하세요! 그럼 문제 풀이로 들어가보죠! 문제와 풀이 문제 링크 : 프로그래머스 Lv3 - 단어 변환 문제 링크 : LeetCode Hard - Word Ladder 👇펼쳐서 코드와 해설 읽기 왜 단어를 보고 그래프를 연상할 수 있을까요? 문제의 제약조건은 사실상 이런 말로 해석이 ..
-
모각코PS / 프로그래머스 Lv2 소수 찾기PS 2022. 5. 28. 11:40
모각코 PS스터디 이번주 마지막 문제는 소수 찾기였습니다. 문제는 간단합니다. 문자열로 주어진 숫자열이 있고, 숫자들을 한번 or 0번 써서 만들어낼 수 있는 숫자들을 모읍니다. 그리고 그 숫자가 소수(prime number)라면 체크합니다. 총 체크된 수를 리턴합니다. 말 그대로 구현했는데요, 한번 같이 보시죠. 문제와 풀이 문제 링크 : 프로그래머스 Lv2 소수 찾기 이 문제의 원 출처 : nwerc.eu 09년도 아카이브 👇펼쳐서 코드와 해설 읽기 로직의 흐름은 이렇습니다. 일단 걸러낼 정보를 거릅니다. 저는 길이가 0인 경우 || 0을 전부 공백으로 치환했을 때 길이가 0이 되는 경우 || 그리고 문자열이 "1"인 경우를 걸렀습니다. 지금 말하면서 보니 길이가 0인 경우는 따로 체크하지 않아도 되..
-
프로그래머스 - Lv2. 오픈채팅방PS 2022. 3. 10. 21:38
문제 : [2019 KAKAO BLIND RECRUITMENT] 오픈채팅방 문제 내용은 여기. 쉽게 말해, 모든 출입 내역을 반환하면 된다. 최초에 방을 개설한 사람이 보게되는 출입내역이 아니라, 처음부터 끝까지의 모든 출입내역을 반환하면 된다. 풀이 import java.util.HashMap; import java.util.ArrayList; public class OpenChattingRoom { class Message { final String uid; final String message; public Message(String uid, String message) { this.uid = uid; this.message = message; } public String getUid() { ret..
-
프로그래머스 - Lv1. 다트 게임PS 2022. 3. 4. 23:58
문제 : [2018 KAKAO BLIND RECRUITMENT 1차] 다트 게임 문제 내용은 여기. 쉽게 말해, (맞춘 점수)^(맞춘 영역의 제곱)*(보너스/이전보너스/패널티 여부)의 총합을 구하면 된다. 풀이 import java.util.stream.Stream; public class DartGame { public int solution(String str) { // sdt - S : single (^1) / D : double (^2) / T : Triple (^3) // bp - * : 보너스(* 2) / # : 패널티(* -1) String[] points = str.replaceAll("\\D+", " ").split("\\s+"); String[] calcs = Stream.of(str...
-
프로그래머스 - Lv1. 비밀지도PS 2022. 3. 4. 12:54
문제 : 비밀지도 문제 내용은 여기. 쉽게 말해, 두 개의 숫자 입력값을 각각 이진수로 전환하고, 이진수의 1을 #으로 치환한 뒤 결과물을 합치면 된다. 풀이 static int N; public String[] solution(int n, int[] arr1, int[] arr2) { N = n; // String[] wall1 = intToWall(arr1); // String[] wall2 = intToWall(arr2); // return combineWall(wall1, wall2); return intToWall2(arr1, arr2); } private static String[] intToWall2(int[] arr1, int[] arr2) { String[] wallArr = new St..
-
프로그래머스 - Lv1. 2016년PS 2022. 3. 2. 11:32
문제 : 2016년 문제 내용은 여기. 쉽게 말해, 어... 문제가 워낙 단순해서 달리 쉽게 말할 방법이 없다. 풀이 public class Year2016 { public String solution(int a, int b) { String[] days = {"FRI", "SAT", "SUN", "MON", "TUE", "WED", "THU"}; int[] months = {0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; int totalDays = 0; for (int i = 1; i
-
프로그래머스 - Lv1. 예산PS 2022. 3. 1. 22:46
문제 : 예산 문제 내용은 여기. 쉽게 말해, 지원할 수 있는 부서의 최대 수를 구해서 돌려주면 된다. 풀이 import java.util.ArrayList; import java.util.List; class Solution { public int solution(int[] d, int budget) { List dlist = new ArrayList(); for (int item : d) dlist.add(item); dlist.sort(null); // 위의 세 줄은 다음과 같이 한 줄로 고칠 수 있다: // Arrays.sort(d); //다음 for문에서 dlist 대신 d 사용. int answer = 0; for (int ditem : dlist) { budget -= ditem; if (b..
-
프로그래머스 - Lv1. 신고 결과 받기PS 2022. 2. 28. 14:30
문제 : 신고 결과 받기 문제 내용은 여기. 쉽게 말해, "신고자 피신고자" 형태로 신고 메시지가 들어올건데, 이를 적절히 잘 가공하고 카운트해서, '회원별 정지회원신고횟수' 배열을 리턴하라는 것. '정지회원 신고횟수' 배열임을 잊고 '정지회원을 신고한 회원' 배열을 리턴하려고 하는 순간 문제의 의도와는 맞지 않게 번거롭게 된다(처음에 이렇게 풀었다). 풀이 class Solution { public int[] solution(String[] id_list, String[] report, int k) { int[] answers = new int[id_list.length]; // 답장나갈 숫자 배열 - ID순 Set reports = new HashSet();..