99클럽 코테 스터디 26일차 TIL (비기너): [백준][Java] 11004 K번째 수 - 실버5
·
ProblemSolve/항해99 코테스터디
문제 보기  풀이정렬을 익혀보는 문제이다.직접 구현해 보는 것도 좋지만 그런 풀이는 이전에 많이 해봤으므로 sort 함수를 사용했다. Arrays.sort(배열);  전체 코드import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.util.Arrays;import java.util.StringTokenizer;public class Main { public static void main(String[] args) throws IOException { Buffe..
99클럽 코테 스터디 25일차 TIL (챌린저): [백준][Java] 2169 로봇 조종하기 - 골드2
·
ProblemSolve/항해99 코테스터디
문제 보기https://www.acmicpc.net/problem/2169  풀이이동은 아래, 왼쪽, 오른쪽으로 밖에 못 한다.칸을 재방문하는 것이 불가능하지만 왼쪽은 이전에도 왼쪽에서, 오른쪽은 이전에도 오른쪽에서 온 것이라면 상관없다. 처음엔 3차원 배열을 사용해 어느 방향으로 이동했는지를 기록했는데 한 for문 안에서 다 처리하려니 오른쪽에서 왼쪽으로 탐색하는 경우가 기록이 되지 않았다. 순서를 어떻게 하면 좋을지 생각하다가 그냥 한 줄씩 왼쪽 이동, 오른쪽 이동 최댓값을 따로 구하고 그중에서 최댓값을 한 번 더 구하는 방식을 채택했다. int[][] dp = new int[N][M];dp[0][0] = matrix[0][0];for(int i = 1; i = 0; j--) { temp[1][..
99클럽 코테 스터디 24일차 TIL (챌린저): [백준][Java] 2437 저울 - 골드2
·
ProblemSolve/항해99 코테스터디
문제 보기https://www.acmicpc.net/problem/2437  풀이그리디를 사용해 문제를 풀었다. int num = 0;while (true) { num++; int sum = 0; for(int j = N - 1; j >= 0; j--) { if(num - sum >= arr[j]) { sum += arr[j]; } if(sum == num) { break; } } if(sum != num) { bw.write(num + "\n"); break; }}arr은 정렬 된 추 배열이다. 그냥 1부터 더해가며 이 수를 계산할 수 있는지 검토해 보았다.큰 수 부터 내려가며 num - sum보다 작을 경우 sum에 더해 주고 만약 sum과..
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.....