99클럽 코테 스터디 23일차 TIL (미들러): [프로그래머스][Java] 소수 찾기 - level2
·
ProblemSolve/항해99 코테스터디
문제 보기https://school.programmers.co.kr/learn/courses/30/lessons/42839 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr  풀이1. 아리스토텔레스의 체2. 백트래킹두 가지 알고리즘을 사용하였다.  아리스토텔레스의 체 for(int i = 2; i 소수를 구하는 빠른 방법이다.최대 범위까지의 숫자들을 전부 소수인지, 소수가 아닌지 판별 해 놓는 것인데,이전에 등장한 수의 배수들은 전부 소수가 아니라고 체크해 둔다는 것이다.0, 1은 판별에서 제외한다. 백트래킹 private void dfs(String numbers, boolean[] visited, i..
99클럽 코테 스터디 22일차 TIL (챌린저): [프로그래머스][Java] 산 모양 타일링 - level3
·
ProblemSolve/항해99 코테스터디
문제 보기https://school.programmers.co.kr/learn/courses/30/lessons/258705 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr  풀이문제를 읽고 dp로 풀어야겠다는 감이 왔다.더 적은 삼각형으로 이루어진 도형을 가지고 다음을 유추해 볼 수 있기 때문이다.n-1의 도형에서 새로 놓을 수 있는 마름모는 정해져 있기 때문에 식을 잘 세우면 되지 않을까?위의 경우는 새로운 마름모를 두지 않았을 때,왼쪽에 치우친 마름모를 두었을 때,똑바로 선 마름모를 두었을 때,오른쪽에 치우친 마름모를 두었을 때로 예시를 분류해 본 것이다. 그러나 아직 식을 세우기엔 애매한 점이 있..
99클럽 코테 스터디 21일차 TIL (챌린저): [백준][Java] 17182 우주 탐사선 - 골드3
·
ProblemSolve/항해99 코테스터디
문제 보기https://www.acmicpc.net/problem/17182  풀이이전 노드에 다시 방문할 수 있다는 점이 조금 어려웠다.그냥 탐색하지 않은 노드만 방문해도 된다면 쉬웠을텐데 말이다. 그래서 "탐색하지 않은 노드만 방문"해도 되게 하는 법을 생각했다.각 노드에서 다른 노드들로의 최단거리를 미리 구해 놓는 것이다.예시의 이 그래프를 보며 각 노드에서 최단 거리를 유도해보자.답은 이렇게 될 것이다. 그럼 이제 새로 구한 최단거리 그래프를 바탕으로 모든 경로를 탐색해보고 min 값을 구해볼 수 있겠다.  private static void dfs(int start, int cur, int[][] arr, int[][] dist) { for(int i = 0; i dist[start][..
99클럽 코테 스터디 20일차 TIL (챌린저): [백준][Java] 1083 소트 - 골드4
·
ProblemSolve/항해99 코테스터디
문제 보기https://www.acmicpc.net/problem/1083  풀이로직은 쉬운데 놓치기 쉬운 부분이 많아서 힘들었다. 내가 생각한 방법은 이렇다.첫 start는 0으로 둔다.start부터 start+S까지 값을 검사한다. (물론 start+S가 N을 넘어가지 않아야 함.)그중 max 값을 뽑는다. 위와 같은 상황이라면 5이다.그럼 이 max의 인덱스부터 start까지 양 옆의 숫자들을 교환한다.여기서는 3과 5만 교환하면 끝이다.  한 번 옮겼기 때문에 남은 s의 값은 2이다.이 값은 max의 index - start로 정한다.이 로직대로라면 맨 앞에 올 수 있는 최고로 큰 수가 왔다는 뜻이니start를 ++ 해준다.다음으로 넘어가자.이번엔 start와 max의 index가 같다.그렇다면 ..
99클럽 코테 스터디 19일차 TIL (챌린저): [백준][Java] 1022 소용돌이 예쁘게 출력하기 - 골드3
·
ProblemSolve/항해99 코테스터디
문제 보기https://www.acmicpc.net/problem/1022  풀이이 문제의 핵심은 특정 좌표에 어떤 수가 들어올지 점화식을 구하는 것이다.이 표를 뜯어보며 어떤 특징을 갖고 있는지 살펴보자. 1. 구역 찾기우선 위와 같이 구역을 나눠 볼 수 있을 것 같다.그럼 특정 좌표의 구역이 어디에 해당하는지 어떻게 구하면 좋을까?x(c), y(r)의 값 중 절댓값이 더 큰 쪽을 고르면 되지 않을까?int l = Math.max(Math.abs(r), Math.abs(c)); 2. 구역 시작 수 구하기구역을 찾았으니 이 구역의 시작 수부터 돌면서 숫자를 구해볼 수 있을 것 같다.1은 무시하고 시작 수를 확인하자.2, 10, 26, 501^2 + 1, 3^2 + 1, 5^2 + 1, 7^2 + 1.....
99클럽 코테 스터디 18일차 TIL (미들러): [백준][Java] 2212 센서 - 골드5
·
ProblemSolve/항해99 코테스터디
문제 보기https://www.acmicpc.net/problem/2212  풀이처음엔 지문이 이해되지 않았다.그래서 시간을 많이 소비하였다. 예제 1번을 우선 오름차순으로 정렬해보자. 우선 처음 나오는 센서인 1번에 집중국이 하나 있다고 생각해보자.전체 길이는 9가 된다. 그리고 집중국은 두 곳 놓을 수 있다.직관적으로 생각해서 어디에 놓으면 좋을까? 나라면 6번에 놓을 것 같다.3 - 1 = 2, 9 - 6 = 3총거리는 5가 된다. 사실 나는 문제를 제대로 이해하지 못해서 아래와 같은 상황을 생각했었으나 집중국으로부터 떨어진 정도(반지름의 길이)가 아니라 총거리를 구하는 것이었다. 어찌 됐든 6번에 놓으면 좋겠다는 건 어떤 생각을 해서 결론이 그렇게 나왔던 걸까?아무래도 3~6 거리가 3이나 되기 ..
99클럽 코테 스터디 17일차 TIL (챌린저): [백준][Java] 2056 작업 - 골드4
·
ProblemSolve/항해99 코테스터디
문제 보기https://www.acmicpc.net/problem/2056  풀이최소 시간을 구하는 문제이지만그래프 탐색을 한다고 생각해보면 선행해야 하는 작업 중 가장 느린 작업이 끝나는 시간을 반영해야 하기 때문에BFS를 진행하며 최대 시간을 구하는 방법을 생각했었다...import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.util.LinkedList;import java.util.List;import java.util.Queue;import java.util...
99클럽 코테 스터디 16일차 TIL (챌린저): [백준][Java] 2179 비슷한 단어 - 골드4
·
ProblemSolve/항해99 코테스터디
문제 보기https://www.acmicpc.net/problem/2179  풀이HashMap을 사용해 문제를 풀었다.입력 순서대로 단어와 인덱스를 넣었다.이 때 단어의 길이-1을 해가며 접두사들을 넣었다.우선순위가 높은 값(최대한 비슷한 단어)부터 넣기 위해서인데 이유는 아래에 나온다. for (int i = 0; i 0; j--) { String key = line.substring(0, j); if(key.length() s) break; if(key.length() == length && map.get(key) == s && i > t) break; s = map.get(key); t = i; length = key.length(); br..