99클럽 코테 스터디 33일차 TIL (미들러): [프로그래머스][Java] 신규 아이디 추천 - level 1
·
ProblemSolve/항해99 코테스터디
문제 보기https://school.programmers.co.kr/learn/courses/30/lessons/72410 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr  풀이1단계 new_id의 모든 대문자를 대응되는 소문자로 치환합니다.2단계 new_id에서 알파벳 소문자, 숫자, 빼기(-), 밑줄(_), 마침표(.)를 제외한 모든 문자를 제거합니다.3단계 new_id에서 마침표(.)가 2번 이상 연속된 부분을 하나의 마침표(.)로 치환합니다.4단계 new_id에서 마침표(.)가 처음이나 끝에 위치한다면 제거합니다.5단계 new_id가 빈 문자열이라면, new_id에 "a"를 대입합니다.6단계 ne..
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..
99클럽 코테 스터디 15일차 TIL (챌린저): [백준][Java] 2665 미로만들기 - 골드4
·
ProblemSolve/항해99 코테스터디
문제 보기https://www.acmicpc.net/problem/2665  풀이bfs에 다익스트라 논리를 적용하면 풀 수 있다.특정 칸 까지 걸리는 최소 검은 방을 최단거리로 생각하면 된다. int[] dx = {-1, 1, 0, 0};int[] dy = {0, 0, -1, 1};Queue q = new LinkedList();int[][] dist = new int[N][N];for(int i = 0; i = N || y >= N) continue; if(matrix[x][y]) { if(dist[x][y] == -1 || dist[x][y] > cur[2] + 1) { dist[x][y] = cur[2] + 1; q.add(new int[]{x, y, dist..
99클럽 코테 스터디 14일차 TIL (미들러): [백준][Java] 14916 거스름돈 - 실버5
·
ProblemSolve/항해99 코테스터디
문제 보기https://www.acmicpc.net/problem/14916  풀이힌트를 보면 그리드, DP를 사용할 수 있는 문제인 것 같다.나는 DP가 더 익숙해서 DP를 사용하였다.즉 거스름 돈이 0부터 N원일 때까지 얼마가 나올지를 계산해보는 방법을 선택했다. int[] dp = new int[N 우선 0~5까지는 미리 값을 계산하여 넣어 놨다.혹시나 input으로 5보다 작은 값이 들어올 경우에도 dp 배열의 크기를 6으로 하도록 했다.여기서 -1이 나와야 하는 값의 경우 100000이라는, 절대 나올리 없는 임의의 큰 값을 넣었다. for (int i = 6; i 이후 반복문을 돌리며5원 더 작은 값에서 5원을 추가한 상황,2원 더 작은 값에서 2원을 추가한 상황 중 더 작은 경우를 골랐다.만..
99클럽 코테 스터디 13일차 TIL (미들러): [백준][Java] 27961 고양이는 많을수록 좋다 - 브론즈1
·
ProblemSolve/항해99 코테스터디
문제 보기https://www.acmicpc.net/problem/27961  풀이오늘은 쉬운 문제가 나왔다!우선 최대한 전체 복제 마법으로 N에 가까운 많은 고양이들을 만들고 일부분만 복제하여 N을 채우면 될 것 같다.그렇게 1에서부터 계속 2배 마법을 걸 경우, 2의 n승으로 늘어나게 된다. long i = N == 0 ? 0 : 1, k = 1;for(; k * 2 따라서 위와 같은 간단한 for문을 N보다 작거나 같을 때까지 돌리고 i를 ++하여 몇 승인제 체크하였다.i가 N이 0일 경우는 0, 아니면 1인데 이 이유는 입력으로 0이 들어왔을 때의 예외처리를 위해서이다. bw.write(i + (N > k ? 1 : 0) + "\n");출력부분이다.k값이 N과 같은 경우 부분 복제 마법을 쓸 필요..
99클럽 코테 스터디 12일차 TIL (챌린저): [프로그래머스][Java] 도넛과 막대 그래프 - level2
·
ProblemSolve/항해99 코테스터디
문제 보기https://school.programmers.co.kr/learn/courses/30/lessons/258711 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr  풀이나는 문제가 너무 어려워서 거의 답을 보고 풀었다.혼자서 푸려고 했지만 계속 오답이 나왔다...일단 그래프들의 특징을 찾아야 한다. 8자 모양  8자 모양 그래프는 중간에 나가는 간선 두 개, 들어오는 간선 두 개가 있는 노드가 존재한다는 특징이 있다. 막대 모양 막대 모양 그래프는 들어오는 간선은 있지만 나가는 간선은 없는 노드가 있다는 특징이 있다.물론, 나가는 간선은 있지만 들어오는 간선은 없는 노드도 있다!그러나 생성한 ..