프로그래머스 16

99클럽 코테 스터디 8일차 TIL 백트래킹(양과 늑대)

https://school.programmers.co.kr/learn/courses/30/lessons/92343 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 사용 알고리즘DFS, 백트래킹 아이디어1. 리스트에 현 노드의 자식 노드를 탐색해 나감.2. 양 3.  양 > 늑대를 만족하는 경우를 우선 탐색하면서 이전에 탐색하지 못했던 노드 재탐색.4. 최대 양의 수 갱신 제출코드import java.util.*;class Solution { static int len; static int maxAns; static List[] list; public static voi..

99클럽 코테 스터디 2일차 TIL 트라이(가사 검색)

https://school.programmers.co.kr/learn/courses/30/lessons/60060 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr  사용 알고리즘트라이 아이디어1. 단어 길이별 정방향/역방향 트라이 생성2. pro??? 형식으로 들어오면 해당 길이의 정방향 트라이 탐색해서 와일드카드 '?' 전 노드가 가지는 단어 수 ㅈ장3. ???pro 형식으로 들어오면 해당 길이의 opr??? 로 변경한 후 역방향 트라이 탐색해서 와일드카드 '?' 전 노드가 가지는 단어 수 저장 유의점- 쿼리가 모두 ? 로 이루어져 있을 때(ex.[?????]) 해당 길이를 가지는 트라이의 루트 노드가..

99클럽 코테 스터디 34일차 TIL 문자열(개인정보 수집 유효기간)

https://school.programmers.co.kr/learn/courses/30/lessons/150370 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제의 핵심은 기간을 비교하면 되는 것이다.우선 약관종류에 따른 유효기간은 Map에 넣어 사용했고, 모든 비교를 일(days)로 바꿔 계산했다.  import java.util.*;class Solution { public int[] solution(String today, String[] terms, String[] privacies) { PriorityQueue pq = new PriorityQueue(); ..

99클럽 코테 스터디 33일차 TIL 문자열(신규 아이디 추천)

https://school.programmers.co.kr/learn/courses/30/lessons/72410 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문자열이 이렇게 어려웠던가.. 주어진 단계를 그대로 구현해내면 되는 문제였는데,풀고나서 다른 풀이를 보니 정규표현식을 사용하면 좀 더 깔끔하게 풀 수 있는 단계가 많았다.조만간 정규표현식을 따로 함 정리해야 할 듯.. class Solution { public String solution(String new_id) { String answer = ""; // 1. 대문자 -> 소문자 an..

99클럽 코테 스터디 24일차 TIL 완전탐색(전력망을 둘로 나누기)

https://school.programmers.co.kr/learn/courses/30/lessons/86971 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr  모든 전선들 중 하나를 차례대로 끊어보면서 각각의 송전탑의 차이를 구했다. 1. j번째 전선 끊고 전력망 연결for(int j=0; j 2. 어느 하나의 노드에 연결되어 있는 송전탑 개수 계산public static void dfs(int x){ visited[x] = true; for(int i=0; i 3. 두 전력망 송전탑의 개수 차의 최솟값 갱신 (cnt, (n-cnt) 차의 절댓값)// 두 전력망의 송전탑 차의 최솟값 갱신answer..

99클럽 코테 스터디 23일차 TIL 완전탐색(소수찾기)

https://school.programmers.co.kr/learn/courses/30/lessons/42839 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 주어진 수를 가지고 만들 수 있는 모든 자릿수의 소수를 구하는 문제이다.모든 자릿수를 구하기위해 부분집합을 사용했고,이 자릿수로 만들 수 있는 모든 순서를 구하기위해 순열을 사용했다.그리고 각각의 수를 소수판별을 해서 소수는 set에 넣어주고, 마지막엔 set의 사이즈를 리턴했다. (중복 제거 위해) 그리고 제출했으나, 2/10/11/12번 테케가 틀렸다.이유는 소수 판별을 할 때 Math.sqrt(num) 범위까지의 수로만 판별해서 121과 ..

99클럽 코테 스터디 22일차 TIL 완전탐색(피로도)

https://school.programmers.co.kr/learn/courses/30/lessons/87946 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 현재 피로도로 탐험할 수 있는 최대 던전 수를 구하는 문제.어떤 '순서'로 탐험하느냐에 따라 최대 던전 수가 달라진다. 범위가 크지 않은 것을 참고하여 순열로 구현했다.1. 탐험할 던전의 순서를 순열로 정한다.2. 현재 던전 순서에 따라 탐험 가능한 던전 수(cnt)를 구하고, 이때 마다 최댓값(answer)으로 갱신한다.3. 모든 경우를 구하고 정해진 최댓값을 반환한다. import java.util.*;class Solution { ..

99클럽 코테 스터디 21일차 TIL 완전탐색(카펫)

https://school.programmers.co.kr/learn/courses/30/lessons/42842 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 그냥 수학처럼 풀었다,,1) x >= y2) x + y = (brown / 2) + 2;3) xy = brown + yellow이 3가지 조건을 만족하는 값을 배열에 저장하면 된다! class Solution { public int[] solution(int brown, int yellow) { int[] answer = new int[2]; for(int x=brown; x>=0; x--){ ..

99클럽 코테 스터디 20일차 TIL 완전탐색(모의고사)

https://school.programmers.co.kr/learn/courses/30/lessons/42840 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 우선 삼인방의 답이 반복되니 반복되는 구간을 1차원 배열에 지정했다.값으로 들어온 정답 배열과 비교해서 각 삼인방의 정답개수를 저장해둔다.정답개수를 탐색하며 최댓값(동점 포함)을 구한다.이 최댓값을 가진 사람의 번호를 저장해 리턴한다. 처음에 제출하고 런타임에러가 엄청 났는데, 알고보니...삼인방 정답을 확인할 때, 단순히 p1[i] 형식으로 비교하고 있었다..각 삼인방의 배열의 크기가 지정되어 있기에 들어오는 answers 배열의 크기에 따라..

99클럽 코테 스터디 7일차 TIL DFS(모음사전)

https://school.programmers.co.kr/learn/courses/30/lessons/84512 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제를 읽으면서 든 생각은 순열, 조합, 부분집합, DFS 어쨌든 재귀로 풀어야겠다고 생각했다문자열을 재귀에 담아 만들면서 돌리고, 원하는 문자가 나왔을 때 그때까지의 번호를 return 하는 형식.총 길이가 5이므로, 5까지만 만들고 되돌리고를 반복하면 된다.몇번째인지를 담는 변수는 함수에 넣으면 안됨!문자가 5를 넘어가면 안되니 5에서 return 조건 걸고, 5가 되기 전에 주어진 단어가 나올 수 있으니 이때도 return 조건문을 걸어줬..