
코드트리-메이즈러너
2023. 5. 13. 00:31
알고리즘(종합)/Lv.3
삼성전자 시험을 보고와서 같은 문제를 똑같이 풀었습니다. 코드트리에서는 통과되었는데 삼성전자 코테는 떨어지게 되었네요,, 혹시 히든케이스를 발견하시면 댓글 남겨주시면 감사하겠습니다! import java.util.*; import java.io.*; public class Main { public static int size, people, time; public static int array[][]; public static int array_next[][]; public static int wall[][]; public static int s_spin[][]; public static int ex, ey; public static int sx, sy, ss; public static int resul..

코드트리 - 팩맨
2023. 4. 13. 02:06
알고리즘(종합)/Lv.3
문제 분석 1. 알낳기 2. 몬스터 잡기 3. 시체 크게 3개의 메소드로 구현하였다. 전체 소스 package test; import java.util.*; import java.io.*; public class Main { public static int monster, repeat; public static final int size = 4; public static final int p_num = 4; public static final int m_num = 8; public static final int max_repeat = 25; public static final int dead_repeat = 2; public static int[][][][] mon_arr = new int[max_rep..

코드트리 - 나무박멸(시뮬레이션)
2023. 4. 7. 23:47
알고리즘(종합)/Lv.3
문제 분석 // 0. 나무 성장하기 // 1. 나무 퍼지기 // 2. 제거할 나무 선정하기 // 3. 제거한 나무 점수 확인 // 4. 제초제 뿌리기 다른 배열 선언해서 -1 해주기 크게 5개로 분할하였고 2, 3 번을 하나의 메서드로 만들었다. 문제는 직관적으로 풀어나갔다. 1. 4방향에 나무가 있는 만큼 +점수 2. 4방향으로 제초제가 뿌려지지 않았으며 벽이 아닐경우 나무가 퍼져나가게 했다. 3. 제초제 범위만큼의 대각선으로 점수를 합하여 선정했다. 4. 제초제를 다른 배열로 선언하여 저장하였다. 전체 소스 package test; import java.util.*; import java.io.*; public class Main { public static int size, year, rage, u..

코드트리 - 예술성 (DFS)
2023. 4. 5. 23:53
알고리즘(종합)/Lv.3
문제 분석 직관적으로 풀면 시간초과가 뜰줄알고 갈피를 못잡다가 소스를 봤는데 직관적으로 풀어도되었다.. 1. 그룹을 분석한다. (그룹을 만들고 각 그룹의 갯수를 기억한다.) 2. 예술점수를 계산한다. (그룹을 기반으로 예술점수를 계산) 3. 십자가를 반시계로 돌린다. 4. 십자가를 제외한 사각부분을 시계반향으로 돌린다. 여기서 3,4 번의 규칙이 중요한데. 3번의 십자가의 경우 세로는 x,y가 서로 뒤바뀐다. 가로의 경우는 (바뀔곳을 TO-BE , 이전거를 AS-IS라 하겠다) TO-BE의 y에 AS-IS의 x가 온다 , TO-BE의 x는 size - AS-IS(x) -1 이다. 4번의 경우 십자가 구분으로 4개로 나눠지는데 4개의 규칙이 다 다르다. 때문에 왼쪽위에의 경우로 가정하고 하는게 좋다. 전체..

코드트리 - 코드트리 빵
2023. 3. 24. 18:14
알고리즘(종합)/Lv.3
문제 풀이 처음에는 조금 더 쉬운 접근 방법이 있을것이라고 생각했다. 그이유는 매 선수(사람) 마다 모든 경우의 수로 움직이면서 큐에 담아주면 시간이 오래걸리거나 큐가 터질것이라고 생각했다. 방법이 생각나지 않아 일단 출발점을 정해주는 메소드를 짰다. 결과는 성공적이였다. 하지만 이후 도착점(편의점)으로 가는 방법에 대해 처음 우려했던데로 너무 많은 경우의수가 있었고, 때문에 나는 거리가 가장 긴 것이 마지막에 도착하지 않을까? 라는 생각에 경우의 수를 생각해봤다. 이것은 지나간 출발점이나 도착점에 대해서 더 이상 지나가지 못한다는 제약 떄문에 불가능 했다. 이 와 같이 4의경우 제일 거리가 긴 경우지만 3이 다른수들에게 막혀 더 돌아가게 되면서 안되는것이 증명됐다 남은 방법은 문제해석을 직관적으로 모든..

Softeer - 8단 변속기
2023. 2. 17. 23:17
알고리즘(종합)/Lv.2
문제 분석 경우의 수 3가지에 대해서 출력한다 1->8 8->1 그 외 첫번째와 두번째 경우의 수를 체크하고 그렇지 않으면 예외인 경우를 출력했다. 오름차순일경우 1인지 체크 , 2인지 체크 ... 내림차순일경우 8인지 체크, 7인지 체크... 전체 소스 int compare_one =1; int compare_eight = 8; for(int i=0; i

프로그래머스 - 귤 고르기
2023. 2. 15. 20:41
알고리즘(종합)/Lv.2
문제 풀이 문제는 간단하다 가장 반복되는 수를 더 해주면서 결과값을 도출하면된다, 하지만 문제는 시간초과이다. 내림차순을 해야하는데 이방법이 쉽지가 않다. 필자의 블로그에 오신분들도 아마 이런문제 때문에 오셨다고 생각한다. 방법은 간단한 오름차순을 해서 역순으로 체크하면 된다. 아마 Arrays.sort는 다들 아신다고 생각한다. 여기서 가장 뒤에값부터 체크한다. (전체에서 Max값을 찾는방법, 2중 for으로 내림차순 정렬 다 해봤지만 시간초과가 뜬다.) 전체 소스 import java.util.*; import java.io.*; class Solution { public int solution(int k, int[] tangerine) throws Exception { int answer = 0; ..

1213 - String
2022. 11. 19. 23:49
알고리즘(종합)/Lv.3
package test; import java.io.IOException; import java.util.Scanner; public class Solution { public static void main(String[] args) throws IOException { Scanner sc = new Scanner(System.in); int test = 10; for (int k = 0; k 3번 5-3+1 //길이가 5 / 찾는거 4 -> 2..

1215 - 회문1
2022. 11. 19. 21:29
알고리즘(종합)/Lv.3
package test; import java.io.IOException; import java.util.Scanner; public class Solution { public static void main(String[] args) throws IOException { Scanner sc = new Scanner(System.in); int test = 10; for (int k = 0; k < test; k++) { String[][] array = new String[8][8]; int legth = sc.nextInt(); // 배열에 데이터 입력 for (int i = 0; i < 8; i++) { String data = sc.next(); for (int j = 0; j < 8; j++) {..

2805 - 농작물 수확하기
2022. 11. 18. 23:33
알고리즘(종합)/Lv.3
package test; import java.io.IOException; import java.util.Scanner; public class Solution { public static void main(String[] args) throws IOException { Scanner sc = new Scanner(System.in); int test = sc.nextInt(); for (int k = 0; k < test; k++) { int size = sc.nextInt(); int [][] array = new int[size][size]; int sum=0; int middle =0; int count=0; //배열에 데이터 입력 for(int i=0; i