본문 바로가기

전체 글115

가장 짧은 문자 거리 문제 이해 주어진 문자열 s를 돌며 특정 문자 t와의 최소 거리를 출력하는 문제이다. 이 문제의 포인트는 여러 번의 문자 t를 마주할 수 있는데, 더 짧은 거리를 출력해야하는 것에 있다. 문제 해결 먼저 특정 문자 t를 구분하기 위해 split을 사용해 공백을 기준으로 배열에 넣어준다. Scanner in = new Scanner(System.in); String input = in.nextLine(); String[] words = input.split(" "); words 배열의 0번째 인덱스가 문자열 s, 1번째 인덱스의 0번째 추출 문자가 특정 문자 t를 의미하므로 각각을 변수에 넣어준다. String str = words[0]; char standardCh = words[1].charAt(0);.. 2024. 4. 2.
특정 문자 뒤집기 문제 이해 특수 문자는 그 자리에 고정시키고, 그 외의 문자들만 거꾸로 배치해서 출력하는 문제이다. 문제 해결 나는 이 문제를 Stack으로 접근했다. Stack은 나중에 들어간 것이 먼저 나오는 LIFO 구조로 거꾸로 출력하는 것에 적합하다고 생각했다. 특수문자는 그 자리에 고정해야하므로 Stack에는 특수문자를 제외한 것들만 push 해주어야 한다. Stack specificCh = new Stack(); for (char word : s.toCharArray()) { //특수 문자 제외하고 스택에 push if((word >= 'A' && word = 'a' && word = '0' && word = 'A' && word = 'a' && word = '0' && word = 'A' && word =.. 2024. 4. 2.
(#4963 Java) 섬의 개수 문제 이해 건너갈 수 있는 경로가 있으면 같은 섬에 있다고 보고, 섬의 개수를 세는 문제이다. 이 문제는 dfs/bfs 문제로 풀 수 있다. 따로 테스트 케이스가 몇 개인지 주어지지 않고, w,h로 0이 주어지면 프로그램이 종료되므로, 0을 2개 입력 받기 전까지 반복해주면 된다. 그럼 문제를 해결해보자. 문제 해결 우선 내가 처음부터 생각하지 못했던 부분은 대각선도 이동할 수 있다는 부분이다. 상하좌우까지만 좌표설정을 해보았는데, 대각선은 처음이다. 대각선 이동은 (상+좌), (상+우), (하+좌), (하+우)의 네 가지 경우가 있으므로 아래와 같이 설정하면 된다. static int[] dx = {-1, -1, -1, 0, 0, 1, 1, 1}; static int[] dy = {-1, 0, 1, -.. 2024. 3. 5.
(#11724 Java) 연결 요소의 개수 문제 좀 잘 읽자...!! N이 1부터인데, 이번에도 습관처럼 계속 반복문의 범위를 for (int i = 0; i < N; i++) { } 이렇게 해서 계속 틀렸다...ㅎ 정신차렷~~~~!! 문제 해결 역시나 static 변수로 설정할 것들 먼저 선언해주자! static int N,M; static int[][] Graph; static boolean[] Visited; static int count; dfs 함수이다. N 범위 주의!!!!! public static void dfs(int node) { Visited[node] = true; for (int i = 1; i < N+1; i++) { //N이 1부터이므로 범위 설정 주의!! if(!Visited[i] && Graph[node][i] ==.. 2024. 3. 4.
(#1012 Java) 유기농 배추 문제 해결 dfs 문제로 풀 수 있는 문제이다. static으로 main 밖에서 선언할 것들을 선언해준다. static int T; static int M,N,K; static int[][] Graph; static boolean[][] Visited; //방문 여부 static int count; static int[] dx = {0, -1, 0, 1}; //좌우 static int[] dy = {-1, 0, 1, 0}; //상하 dfs 함수를 만들어준다. 배추흰지렁이는 상하좌우로 모두 움직일 수 있으므로 반복문의 범위를 4번 반복하도록 설정해준다. 각각 행/열의 새로운 좌표를 만들어준 후, 새로운 좌표의 범위 체크, 방문여부 체크, 1인지 아닌지 체크 (배추가 위치해있는 곳)를 한 후 모든 검증이 끝.. 2024. 3. 4.
(#2606 Java) 바이러스 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 진짜 짜증나 죽는 줄 알았다... 분명 내 로컬에서는 답이 잘 나오는데, 왜 계속 이러는 거지 했는데, 진짜 어이없는 실수였던 것,,, i가 곧 node 번호인 걸 잊고 그냥 습관처럼 0부터 했다가 난 실패 메세지였다. 1번부터 방문하기 때문에 1부터 넣어주어야 한다.. 문제 해결 이것도 DFS/BFS 두 가지 방법으로 풀 수 있는데 나는 DFS에서 재귀 방법을 선택했다. DFS/BFS 문제를 풀기 위해 필요한 것들을 세팅해주자. 최종적으로 웜 바이러스에 걸리게 되는 컴퓨터의 수를 출력해주어야 하므로 추가로 count 변수도 만들어주자. static int N, E; //컴퓨터 수, 연결된 선의 개수 static int[][] Graph; static boolean[] Visited;.. 2024. 2. 29.
반응형